1

selectmenuを使用したスタイルであるいくつかのドローダウンを含むフォームがあります。これらのドロダウンは最初は非表示になっています。特定の条件で表示されます。したがって、ドロップダウンが表示されているかどうかを確認する必要があります。ユーザーはそこから値を選択し、フォームの送信のみを許可する必要があります。ユーザーが値を選択していない場合、エラーが表示され、フォームは送信されません。

selectmenuのJSファイル

if ($.fn.selectmenu) {
  $('select.dd-select').selectmenu({
    style:'dropdown',
    maxHeight: 300,
    transferClasses: true
  });

}

検証用JSファイル

$('#submitbutton').click(function(){
var returnValue = true;
$('#form1 .required').filter(':visible').each(function () {
inputVal = $(".dd-default option:selected").val();
alert(inputVal); -- displaying null
var input = $(this);alert(input.val()); -- displaying null
input.next('ul.innererrormessages').remove();
input.removeClass('required');
if (!input.val()) {
    input.addClass('required');
    var $msg = input.attr('title');
    input.after('<ul class="innererrormessages"><li>'+$msg+'</li></ul>'); --error message not shown
    returnValue = false;
}

 });
});

$('#form1 .required').change(function () {
    var input = $(this);
    input.next('ul.innererrormessages').remove();
    input.removeClass('required');
    alert(input.val());-- displays the value
    if (!input.val()) {
        input.addClass('required');
        var $msg = input.attr('title');
        input.after('<ul class="innererrormessages"><li>'+$msg+'</li></ul>');-- the error message is also displayed properly
    }
});

HTML

<select id="dd1" name="dd1" class="required dd-select" title="Please select to continue.">
  <option value=""> --</option>
   <%= List %>
</select>

上記のコードでは、値が選択されていない場合、強調表示されますが、エラーは表示されません。選択のタイトル属性から取得する必要があるエラー。値が変更されると、新しい値が警告されます。しかし、再度送信すると、値は null として表示されます。selectmenu を使用してこのためのフィドルを作成する方法がわかりません。ドロップダウン検証のみでフィドルを作成すると、正常に機能します。その選択メニューのときに、選択した値を取得する別の方法があると思いますか? 誰かが私が間違っていることを教えてくれますか? ありがとう

4

2 に答える 2

0

!input.val() にエラー メッセージが表示されます。これは、値がないか、値 = 0 であることを意味します。if (!input.val()) {} 内でアラートを出さない理由

        if (!input.val()) {
            alert("Ther is no value!"); // new alert()
            input.addClass('required');
            var $msg = input.attr('title');
            input.after('<ul class="innererrormessages"><li>'+$msg+'</li></ul>');//-- the error message is also displayed properly
        }
于 2013-11-14T08:39:13.533 に答える
0

jquery 検証などのライブラリを使用してみてください。この質問では、selectmenu で機能させる方法に関する有用な情報を見つけることができます。その後、カスタマイズされたメソッドを追加して、ドロップダウンが表示されているかどうかを確認できます。

于 2013-11-15T18:03:50.343 に答える