2017-11-13 10 views
0

が含まはonSubmit検証せずにフォームを送信する必要があり、ここでアクション

<cfoutput> 
<form name = "xrefform" 
    id  = "xrefform" 
    action = "" 
    method = "post"   
    onsubmit = "return submitx('#coltop#', '#col#')"> 
</cfoutput> 

形でそれを提出するには、2つの異なる方法があります: 1)あなたは、フォーム内のデータが中に配置されるようにしたいときMySQLのテーブル 2)あなたは私が対応するjavasで

<input type  = "Submit" 
     name = "SubmitXref" 
     class = "submitbut" 
     value = "Submit"    
     onclick = "aasubmit('xref2.cfm')"> 

を持っているデータは、最初のケースではMySQLのテーブル

から削除したいですcript:

function aasubmit(target) { 
    document.xrefform.action = target; 
}//end function aasubmit 

これは問題なく動作します。削除ケースについては

私はこれが実行され、この場合には、私はそれはしたくないのjavascript submitx(ということです問題を)持っている

<input type = "Submit" 
     id  = "delbut" 
     class = "onoffbut" 
     value = "delete"    
     onclick = "aasubmit('repdel.cfm')"> 

を持っています。

document.form.submit()メソッドを使用すると、onsubmit関数の実行を避けることができます。しかし、私はその行動を示す方法を理解することはできません。

誰かに私にこれを行う方法を教えてもらえますか?より多くの私は答えを見つけたいくつかの周りの騒ぎの後


をonSubmitスクリプト--hereを回避する必要が--which削除ボタンについては、HTMLです:

<input type = "button" 
     id  = "delbut"    
     value = "Delete this item" 
     onclick = "buttonsubmit('xrefdel.cfm', 'xrefform')"> 

そして、ここにJavaScriptです。

function buttonsubmit(target, source) { 
var q = document.getElementById(source); 
q.action = target; 
q.submit(); 
} 

これは完全に機能します。通常の送信はonsubmitスクリプトを尊重し、削除ボタンはそれをスキップします。

+0

フォームに送信ボタンが1つだけあります。どのアクションを実行するかは、ユーザー入力としてドロップダウンまたはラジオボタンを使用します。 –

+0

これは、どのように私がonsubmitスクリプトを避けるのに役立ちますか? –

+0

JavaScriptを一切使用しないでください。 ColdFusionコードを使用してフォーム変数を読み込み、実行する必要があることを実行します。 –

答えて

0

のが要件の概要を説明してみましょう:

  • 2つは
  • ませんJavaScriptが送信ボタンを提出

    1. 一つの形。

    送信ボタンをそれぞれnameにすると、1つのアクションページがあり、どのボタンがクリックされたかを確認できます。フォームのスコープ内に存在します

    name="doUpdate"またはname="doDelete"

    名前だけキーは、ボタンがクリックされた提出どちらかです。それに応じて確認して処理するには、structKeyExists()を使用してください。

    もちろん、onsubmit="return validateForm()"を使用して検証機能を呼び出すことをお勧めします。 「削除」をクリックすると、ユーザーは処理前にしたいことを確認することができます。関数validateForm()trueまたはfalseを返す必要があるので、JavaScript submit()はまだ避けてください。

  • +1

    特定のフォームフィールドにフォーカスがあるときにEnterキーを押すとフォームを送信できることを忘れないでください。関連性は、投稿された投稿フィールドがユーザが気にしたものではない可能性があることです。 –

    +0

    私はあなたが私の必要性を理解していないと信じています。 1つのフォーム、2つのサブミット、フォームで指定されたonsubmit = abc()を実行する必要があります。もう一方はそのスクリプトを実行すべきではありません。 2回目の提出がjavascript経由かどうかは気にしませんが、2回目のonsubmit =を避ける方法はわかりません。 –

    +0

    'submixt'関数は、フォームの送信方法に関係なくフォームを送信するときに実行されます。あなたはそれを避けることはできません。どのサブミットコントロールがアクティブ化されているかを知るように変更するか、別の方法でその関数のロジックを適用するかのどちらかを選択します。後者のアプローチは私を最も簡単に攻撃します。 –

    0

    形でこのような何か:

    <input name="action" value="save" id="action" type="hidden"> 
    <button type="submit" class="button button-basic-green" onclick="document.getElementById('action').value='save';"><span class="fa fa-save"></span> Save</button> 
    <button type="submit" class="button button-basic" onclick="document.getElementById('action').value='reload';"><span class="fa fa-repeat"></span> Save &amp; Reload</button>   
    <button type="submit" class="button button-basic" onclick="document.location.href='./';return false;"><span class="fa fa-arrow-circle-o-left"></span> Cancel</button> 
    

    は、「保存」のデフォルトの動作に注意してください。 enter image description here

    次に、単一のフォームアクションページで、form.actionが何であるかを確認し、それに応じて処理します。

    <cfif form.action eq "reload"> 
        <cfset loc="page.cfm?id=#form.id#"> 
    <cfelse> 
        <cfset loc="./"> 
    </cfif> 
    
    関連する問題