0

(ユーザーが制御する)動的エントリを持つ製品レコードを作成するためのフォームがあります(つまり、製品にはN個のオプション(さまざまな色、さまざまな仕上げなど、価格も異なる場合があります)を含めることができます)。ユーザーは一連のフィールドを追加しますもちろん、ほとんどの製品には 1 つのバージョンしかありません (したがって、オプションは 1 つだけです)。したがって、この場合、オプション名を指定する必要はなく、価格のみを指定する必要があります。したがって、オプション名フィールドは、次の場合にのみ検証されます。フォームに複数のオプション価格フィールドがあります。

    $('.iprice').each(function() {
      $(this).rules('add', {
        required: true,
        number: true,
    */    messages : { required:'enter price', number:'enter only price' }  */
      });
    });
      $('.iname').each(function() {
        $(this).rules('add', {
          required: function(){
            if ($('[name="attr[2][price]"]').length) {
                return true;
            } else {
                return false;
            }
          },
    /*      messages: function(){
              if ($('[name="attr[2][price]"]').length) {
                return 'option name?';
              }
            }  */
          });
       });

上記のように、検証は正常に機能します。(こちらのjsfiddleを参照してください)。ただし、検証には、カスタム メッセージを提供するコメント アウトされたセクションが 2 つあります。これらが含まれている場合、参照されたフィールドのいずれかに値があると、送信ボタンはエラーを返します。

"{"error": "シェル フォームが検証されません{'html_initial_name': u'initial-js_lib', ..."

私が見る限り、構文は正しく、メソッドは正しいものです。誰が私がどこで間違っているかを見ることができますか?

(要素ごとに data-msg-required="??xx??" 属性を作成することで、他の方法で問題を回避できることはわかっていますが、それは少し洗練されておらず、長ったらしいです。)

アイデアはありますか?

オプションのセットが 1 つだけのフォームを示す別の jsfiddleを次に示します。価格フィールドのカスタム メッセージは有効になっていますが、名前フィールドのカスタム メッセージのコメントが解除されていると、送信時に検証がクラッシュします。

4

1 に答える 1

0

プラグインを最新バージョンにアップグレードします。(1.11.1)

于 2013-09-12T13:36:27.673 に答える