2011-07-27 10 views
0

カスタムJavascript検証と組み込みColdfusion検証を組み合わせる方法を知っている人はいますか?カスタムJavascript警告はCFと同じ警告ボックスに表示されますか?私はCFがonsubmitイベントをフォームに追加し、いくつかのjsバリデーションを行う_CF_check ['フォームの名前']関数を作成することを知っていますが、どのようにアラートを組み合わせますか?カスタムJavaScript検証によるColdfusion CFFORM検証の拡張

+0

必要に応じて、カスタムJavaScript関数を呼び出すために、 ''を使用することができます。注:javascript関数のシグネチャは 'function yourFunction(formObject、formField、fieldValue) 'でなければなりません。 – Leigh

+0

残念なことに、さまざまな理由からcfformのカスタムjs検証にcfselectの代わりにselectを使用する必要があります。 – cam

+0

隠しフィールドを追加して、それに検証関数をフックできます。つまり、。 IIRCは、フォームが提出されたときにも呼び出されます。 – Leigh

答えて

3

コメントに記載されているとおり、onValidate属性を使用してカスタムJavaScript関数を呼び出すことができます。 cfselect(あなたが使用できないと言ったもの)を使用するのと同じくらいエレガントではありません。しかし、アラートを統合し、内部機能をハッキングすることはありません。何らかの理由でonValidateを使用できない場合は、おそらく内部構造を掘り下げる必要があります。

<script type="text/javascript"> 
    function yourFunction(frm, fld, value){ 
     // some pointless validation 
     var elem = document.getElementById('foo'); 
     return elem.options[elem.selectedIndex].value == 2; 
    } 
</script> 

<cfform name="theForm" method="post"> 
    <select name="foo" id="foo"> 
     <option value="0">apples</option> 
     <option value="1">oranges</option> 
     <option value="2">pear</option> 
     <option value="3">grape</option> 
    </select> 
    <cfinput type="hidden" name="fooValidate" onValidate="yourFunction" 
      message="You must select pears because we say so.."> 
    <input type="Submit" name="txtSubmit"> 
</cfform> 

注:あなたのjavascript関数のシグネチャはでなければなりません:

function yourFunction(formObject, formField, fieldValue) { 
     ... 
     // return true if validation was successful 
    } 
+0

ああ、そんなことをやっていると思っていませんでした。完璧です...ありがとう! – cam

0

私はあなたがそれを行うことができる唯一の方法は、次のコードのようなカスタマイズされた関数からjavascript関数をビルドすることです。

<script> 
    function myFunction (_CF_this) { 
     ..... 
     ..... 
     _CF_checkmyForm(_CF_this) // here is CF built-in function 
     ..... 
     ..... 
    } 
</script> 

<cfform name="myForm"> 
    <cfinput name="txtInput" required="Yes"> 
    <input type="Submit" name="txtSubmit"> 
</cfform> 
+0

私はその関数を呼び出すことが問題ではないと考えています(既にサブミット時に自動的に呼び出されています)。問題は、javascript検証アラートを1つに結合する方法です。 – Leigh

+0

@Leighあなたは正しいです。それらを呼び出すことは問題ではなく、両方とも(個別に)発砲するでしょう。問題は自動的にCFが呼び出され、それらのアラートが1つのアラートボックスに表示されます。これらのアラートが合格すると、カスタムJSがチェックされ、さ​​らにアラートボックスが開きます。 – cam

+0

@cam - 私の答えを見てください。それは私が内部を掘り下げることなく考えることができる最も簡単な選択肢です。 – Leigh

0

私は実際に検証ロジックを作成することによって、全体的に離れてCFFORMの組み込みの検証メカニズムを使用してから移動し、CFFORMましたCFCメソッドでは、jQuery.ajax()を使用してリモートで呼び出します。これにより、検証を1か所に保持し、クライアント側とサーバー側の両方の検証に使用できるようになります。

関連する問題