0

我是 jquery UI 的新手,所以我不确定我的代码中发生了什么。在我的表格中,有 3-4 个隐藏的选择菜单。当我们选择一个单选按钮时,一个选择菜单是可见的,类似地,通过单击其他选项也会显示其他选择菜单。现在在提交表单时,我正在尝试遍历所有这些选择菜单并检查是否都选择了值。基于此,我必须显示错误消息。为此,我编写了以下代码,适用于页面中的第一个选择菜单。但是当我从第二个选择菜单中选择一个值时,这些值不会被覆盖。第一个选择菜单值本身正在显示。我需要更改选择菜单的任何属性或属性。有人可以帮我理解吗?

选择菜单

$('select.class1:not(select.class2)').selectmenu({
    style:'dropdown',
    maxHeight: 300,
    transferClasses: true
  });
$(this).selectmenu("refresh");

HTML

<select id="test" name="test" class="required class1 class2" title="Please select to continue.">

js

$('#submit_form').submit(function() {
    var ddreturn = true;
    var inputVal = "";
    $('#merchant_form .required').filter(':visible').each(function () {
        inputVal = $(".required option:selected").val();
        var input = $(this);
        alert(input.val()); -- always gives me empty
        alert("input "+inputVal);
        $(".ui-selectmenu").removeClass( "correct" );
        $(".ui-selectmenu").removeClass( "highlight" );
        $(".ui-selectmenu").next('ul.error').remove();
        if (!input.val()) {
            $(".ui-selectmenu").addClass( "highlight" );
            var $msg = input.attr('title'); 
            $(".ui-selectmenu").after('<ul class="error"><li>'+$msg+'</li></ul>');.
            firstSel= true;
            ddreturn = false;
        }
        if(inputVal && firstSel == true){
            $(".ui-selectmenu").addClass( "correct" );
            ddreturn = true;
        }
        if(inputVal){
            ddreturn = true;
        }
    });
    return ddreturn;
});

在上面的代码中也有几个问题。

  1. 实际上 inputVal 不应该被使用。由于 input.val() 总是给我 null 我正在使用 inputVal 它给出了被选择的值。

  2. 由于 input.val() 为空,因此我也没有获得 title 属性 input.attr('title');

  3. 上面代码中的其他所有内容都适用于第一个选择菜单但是当我选择下一个选择菜单时,inputVal 仍然保留为第一个选择菜单选择的值,因此即使我没有从第二个下拉列表中选择任何内容,ddreturn总是正确的,因此表单正在被提交。

由于它是一个非常古老的应用程序,因此正在使用大量代码。所以不确定是哪个导致了问题。我真的要疯了。有人可以帮我解决这个问题吗?我真的不知道如何推进这件事。

是否需要添加 --- $(this).selectmenu("refresh"); 在选择菜单代码中?我一直在检查这一点并阅读到要反映所选值,我们必须调用 selectmenu("refresh")。

4

0 回答 0