2016-12-27 11 views
0

2つの数値フィールドのパターンが正しく機能しない(フィールドが検証されなくてもフォームを送信できる)という奇妙な問題があります。 HTMLは次のようになります。私はフィールドに何かを入力すると、それが正規表現にマッチしていない場合パターンHTML5検証で検証されないとフォーム送信が妨げられない

 <input type="text" class="txtmin" pattern="^[+-]?\d*(\.\d+)?$" placeholder="Minimum price"> 

     <input type="text" class="txtmax" pattern="^[+-]?\d*(\.\d+)?$" placeholder="Maximum price"> 

すると、フィールドは赤でマークされますが、私はonclickのイベントでフォームを送信するために、検証をしようとした場合

$('txtmin').oninvalid = function (event) { 
      return; 
     } 

しかし、これは何もしない:私はこのような何かをしようとしていた

$(".btnAnalyze").click(function() { 
      // the form doesn't validates?? 
     }); 

...入力値を変更するには、ユーザーが防止され、私は例外を取得しないのですか?誰かが私を助けることができますか?

編集:

<form> 
    <span class="input-group-btn"> 
          <button class="btn btn-default btnGo" type="submit">Go!</button> 
         </span> 

</form> 

    $(".btnGo").click(function() { 

      if ($('.txtSearch').val() == "") { 
       ShowMessage("Please enter the search term!"); 
       return; 
      } 
      else{ 
       PostAndUpdate($('.txtSearch').val(), $('input[name=type]:checked').val(), $('input[name=shipping]:checked').val(), $('input[name=condition]:checked').val(), $('.txtmin').val(), $('.txtmax').val()); 
      } 
     }); 
+1

は両方ともフォームタグ内のフィールドですか? –

+0

@ Ryad.ivいいえ、彼らはそうではありません。フォームタグの中に入れないでください。これを何とかjqueryで修正できますか? –

+1

投稿タグを検証してブロックするには、formタグが必要です。そうしないと、javascriptで入力を検証する必要があります。 –

答えて

1

をボタンをクリックすると、フォームの送信には一致しない:リヤードは、これは完全なコードHTMLと私が発射されているイベントです。アクションの順序は次のとおりです。

  1. クリックボタンボタン上
  2. clickイベント
  3. clickイベントは、フォーム上のイベント、そして火submitをキャンセルしていない場合は
  4. submitイベントがあればイベントをキャンセルしません(例:妥当性検査のエラー!)

0で作業しているのでイベントでは、フォームはまだ検証されていません。代わりにフォームのsubmitイベントで作業を行う必要があります。

+0

フォームが通常のクリックイベントだけで検証されたかどうかを確認するにはどうすればよいですか? –

+1

フォーム上で 'checkValidity()'を呼び出すことができます(例えば、 'form。checkValidity() ')、フォームのすべての要素が有効であれば' true'を返します。 –

+0

ダークアボスとは、単一のフィールドのみについて、彼らはこのメソッドCheckValiditiyを持っていますか?またはValid()? –

1

あなたは(つまり、ほとんどのブラウザでサポートされている)、より良いそして、あなたのinput分野で唯一の価格を期待した場合のアプローチはminmax属性を持つタイプnumberinputを使用することです:両方のフィールドがminを持っていることを

<input type="number" class="txtmin" min="0.01" max="1000.00" placeholder="Minimum price"> 

<input type="number" class="txtmax" min="0.01" max="1000.00" placeholder="Maximum price"> 

注意属性は設定されていますが、これは必須ではありません。このように純粋なHTMLを使用するすべての入力の値を制限することも、制限しないこともできます。

もう1つの方法は、jQueryのようなJavascriptライブラリを使用し、入力の手動検証を実行することです。

関連する問題