奇怪的javascript / jquery问题

时间:2012-05-25 09:47:04

标签: javascript jquery asp.net-mvc-3

希望有人可以帮助我。

我有一个页面,显示模态弹出窗口中的用户列表。此页面可以通过两种方式访问​​,一种是您选择未批准的用户,它将打开该页面,另一种选择用户帐户的方式会打开一个弹出窗口,询问您是否有任何搜索条件,如名称,一旦完成你搜索它会打开用户页面。

我在表单上有一个按钮来清除任何过滤器。当我在未批准的用户页面上运行它时,它会清除该框,但是如果我从表单上执行此操作,代码将不会清空文本框,当我尝试警报时它不显示数据。警报在未批准路线上的作用位置!

这是我正在使用的jquery:

    clear: function () {
        //reset filters//
        $('.usersFilterList li').remove();
        $('.userFilterSelect option').show();

        $('#UserFilter_SearchTermIncluded').attr('value', ''); // This line doesn't seem to work properly

        alert($('#UserFilter_SearchTermIncluded').attr('value'));

        //hide filter options
        MSG.showNHide('', '#usersFilterBox');

        //reset modal control buttons
        $('#usersButSaveFilter,#usersButClearFilter').hide();
        $('#usersButFilter').fadeIn();

        usersFilter.refresh(0);
    }

任何人都可以看到我做了什么愚蠢的事吗?正如我所说,它与同一MVC动作调用的形式完全相同,只是与其他弹出窗口之间。

道歉,如果这令人困惑,我恐怕不能发布任何代码了。我可以向你保证,文本框的ID是正确的。

这里的任何建议都会非常感激,因为我已经盯着它好几个小时......

干杯, 加雷

如果我右键单击第二个选项并在新选项卡中运行并首先弹出一个完整页面,那么代码将起作用!所以问题似乎是有两个弹出窗口。

解决

我找到了自己的工作,谢谢你的帮助。

我只是分配了一个类并搜索了该类的任何项目并将其清除:

    $('.jq-clearme').val('');

我会尽可能地关闭这个。由于我的代表太低,我还不被允许。

4 个答案:

答案 0 :(得分:2)

要更改元素的值(或检索它),访问属性是错误的方法 - 它在两个方向上都不同步。你想要的是属性。虽然通过.prop('value'[, newvalue])公开,但使用jQuery获取/设置它的正确方法是.val([newvalue])

要清除元素的值,请使用以下命令:

$('#UserFilter_SearchTermIncluded').val('');

要检索/显示它,请使用

alert($('#UserFilter_SearchTermIncluded').val());

答案 1 :(得分:0)

您应该使用val()来获取/设置输入值。

在没有参数的情况下使用以获取值:

$('#UserFilter_SearchTermIncluded').val();

使用参数设置值,在这种情况下将其设置为空:

$('#UserFilter_SearchTermIncluded').val('');

答案 2 :(得分:0)

是否涉及ajax调用,可能正在加载您发布两次的Javascript,因此在第二次调用时(在ajax调用之后)发现冲突?

正如其他人所说,最好使用.val('')来设置值,.val()来获取值。如果有任何Javascript错误,请检查firebug。

答案 3 :(得分:0)

我找到了自己的工作,谢谢你的帮助。

我只是分配了一个类并搜索了该类的任何项目并将其清除:

$('.jq-clearme').val('');

我会尽可能地关闭这个。由于我的代表太低,我还不被允许。