0

1 つ以上の通貨金額を取得するテキスト ボックスの動的リストがあります。少なくとも 1 つのテキスト ボックスに有効な通貨の金額を設定したいと考えています。

私はそれを完全に機能させることができません。アイデアや提案をいただければ幸いです。

これが私がこれまでに持っているものです...

<html>
  <head>
  <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.js"></script>
  <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/themes/cupertino/jquery-ui.css" rel="stylesheet" type="text/css" />
  <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js"></script>
  <script type="text/ecmascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.min.js"></script>
  <script type="text/ecmascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/additional-methods.min.js"></script>
  <script type="text/javascript" src="js/jquery.maskedinput-1.3.min.js"></script> 

  <div id="page_wrap"><form action="http://local.host.com/myform/net/send" method="post" accept-charset="utf-8" id="myform">
  <h2>Test</h2>
  <h3>Enter an amount and click send</h3>
  <?php //foreach ($recs as $rec): ?>
  <Fieldset>
    <label for="Amount_1">Amount</label>
    <input name="Amount_1" type="text" id="Amount_1" />
  </Fieldset>
  <Fieldset>
    <label for="Amount_2">Amount</label>
    <input name="Amount_2" type="text" id="Amount_2" />
  </Fieldset>
  <Fieldset>
    <label for="Amount_3">Amount</label>
    <input name="Amount_3" type="text" id="Amount_3" />
  </Fieldset>
  <?php // endforeach; ?>

  <span class="button right"><input type="submit" value="Send" /></span>
  <br class="flt_clear" />
  </form>
    <script>
    $(document).ready(function() {
      $('input[name^="Amount_"]').mask("$?999");    
      $.validator.addMethod("pickAtLeastOne", function(value, element, param) {
        return $('input[name^="Amount_"]').val() == "$";
      });
      $('#myform').validate();
      $('input[name^="Amount_"]').each(function() {
      $(this).rules("add", {
        pickAtLeastOne: true,
        messages: {
          pickAtLeastOne: "Please enter at least one amount"
        }
      });
    });
    });
    </script>
  </body>
</html>
4

3 に答える 3

1

これを試してみてください。代わりに、txtBoxでクラス量を使用しており、必要に応じてコードFIDDLEを実行して変更できます。

$.validator.addMethod("pickAtLeastOne", function(value, element, param) {
   var retCode = false;
   var txtBoxLength = $('.amount').length;
   var ctr = 0;
   $('.amount').each(function(value, element) {
     if ($(this).val() == ''){
       ctr++;
     }
  });
 return ctr == txtBoxLength;
});
于 2012-10-12T04:44:07.060 に答える
1

グループセレクター全体ではなく、現在テストされている要素に対してチェックする必要があるため、次のコードを置き換えてみてください。

return $('input[name^="Amount_"]').val() == "$";

これについて:

return value == "$";

なぜなら、

于 2012-10-09T16:26:18.913 に答える
0

これが私がそれを機能させる方法です。私の pickAtLeastOne メソッドを除いて、すべてが正しかったです。これが機能するものです:

$.validator.addMethod("pickAtLeastOne", function(value, element, param) {
  var retCode = false;
  $('input[name^="Amount_"]').each(function(value, element) {
    if ($(this).val() != '$' && $(this).val() != '') {
      retCode = true;
      return;
    }
  });
  return retCode;
});
于 2012-10-12T04:28:35.927 に答える