0

したがって、テキスト、整数、およびファイルのアップロード用のフィールドを持つマルチパートフォームがあります。
textAnnotationsとvalidationMessageForをtextフィールドとintフィールドに使用できますが、ファイルのアップロードには使用できません。そこで、ファイルのアップロードを検証するために次のコードを実装しました。

$(document).ready(function() {
          $("#Error").hide();
          var pdfFile = '<%=Model.PdfFile %>';
          if (pdfFile == null || pdfFile1 == "") {
              $("#Submit").click(function() {
                  var ext = $('#File').val().split('.').pop().toLowerCase();
                  var file = $('#File').val();
                  if ((!file || ext != 'pdf')) {
                      $('#Error').show();
                      return false;
                  }
                  return true;
              });
          }
      });

このコードは、現時点で私が知る限りはうまく機能しますが、他のフィールドのチェックの前に実行されるため、ずさんなように見えます。つまり、ユーザーが[送信]をクリックしたときにフォームに複数のエラーがある場合、ファイルアップロードの検証メッセージが表示されますが、他のフィールドには表示されません。その後、ユーザーが有効なファイルをアップロードして[送信]をもう一度クリックすると、他のフィールドの検証メッセージが表示されます。ずさんな。そこで、テキストボックスにもjQuery検証を実装しようとしましたが、何らかの理由でこれが機能しません。

$(document).ready(function () {
          $("#captionVal").hide();
          $("#Submit").click(function () {
              var caption = $("#Caption").val();
             if (!caption || caption == "") {
                  $("#captionVal").show();
                  return false;
              }
              return true;

          });
      });

フィールドを常にnullとして読み取るように見えるため、trueを返すことはありません。

追加してみました

$("Caption").change(function() {

と同様

$("#Caption").bind(function() {

ifステートメントの前にありますが、役に立ちません。

また、jQuery検証を使用してみました

$(document).ready(function () {
         $("#term").validate();
      });

しかし、それはまったく何もしませんでした(おそらく私はプラグインの使い方を理解していませんか?)

だから私の質問は、どうすればテキストボックスを検証できますか?
本当に私がする必要があるのは、それらが空でないことを確認することです。送信クリックでエラーラベル(ポップアップではない)が表示されている場合、または検証プラグインを使用するにはどうすればよいですか?.zipファイルをダウンロードして.validate.jsファイルを追加(および参照)しましたが、.validateメソッドは何もしないようです。

4

1 に答える 1

4

フォームフィールドにname属性があること、およびプラグイン宣言中または組み込みのクラス機能を介して検証ルールを指定していることを確認してください。

また、カスタム検証メソッドをプラグインに直接追加して、すでに組み込まれているものと同じように使用することもできます。

例:

<html>
<head>
   <script src="path/to/jquery.js">
   <script src="path/to/jquery-validator.js">
   <script>
    // Add a custom method for file validation (going off your logic - haven't tested)
    jQuery.validator.addMethod("file", function(value, element) { 
        var ext = value.split('.').pop().toLowerCase();
        return (!value || ext != 'pdf');
    }, "Please make sure your file has a valid PDF extension");

    // This will make the form pass all validation checks on submit and 
    //  display errors if any occur
    $('#myForm').validate();
   </script>
</head>
<body>
   <form id="myForm">
      <input type="text" name="email" class="required email" />
      <input type="text" name="username" class="required" />
      <input type="text" name="file" class="required file" />
      <input type="submit" value="Submit form and get your ass validated!" />
   </form>
</body>
</html>

カスタム検証メソッドリファレンス:http ://docs.jquery.com/Plugins/Validation/Validator/addMethod#namemethodmessage

編集:プラグインにファイル拡張子検証メソッドが組み込まれていることに気づきました:http: //docs.jquery.com/Plugins/Validation/Methods/accept#extension

編集2:カスタムメソッドを使用せずに(組み込みの方法を使用して)検証する方法は次のとおりです。

<input type="text" name="file" />

    $('#myForm').validate({
         rules: {
            file: {
                required: true,
                accept: "pdf"
             }
         }
    });
于 2012-06-14T17:33:57.530 に答える