cqwcns 发表于 2019-10-14 23:27

JS改变$(this).val()的问题。


vResponse是一个数组,.typeahead是个input
for循环判断input的值是否在数组,如果不在,则清空input值。
通过console.log输出,判断是没有问题的,就是$(this).val("")这句不生效,不知道什么原因?请大家帮忙看看,或者帮忙改一下代码,谢谢。

        $("#divMainContent").on("blur", ".typeahead", function () {

for (i = 0; i < vResponse.length; i++) {
                        if ($(this).val() == vResponse["value"]) {
                                return
                        };
                };

                $(this).val("");

        });

人人生而水 发表于 2019-10-14 23:49

$(this).val();好像是获取值的,$(this).val=''你试下

小可爱~ 发表于 2019-10-15 00:17

如果val()不行的话, 使用attr试试, 我估计也不是我说的问题, 你可以试着console.log($(this).val()) 看下输出了什么....

momosys 发表于 2019-10-15 00:55

$(this).html('') 或 $(this).text('')
val()要有value属性才会生效

不苦小和尚 发表于 2019-10-15 07:10

本帖最后由 不苦小和尚 于 2019-10-15 07:29 编辑

this应该指向的是window,把this改成event.target试试

annybaby 发表于 2019-10-15 09:02

发个可以运行的代码

ss63551234ss 发表于 2019-10-15 15:35

判断数组不是这样的,百度一下,js判断数组。

lwbjing 发表于 2019-10-17 12:35

$("#divMainContent").on("blur", ".typeahead", function () {
    // 选1个即可
    // if (vResponse.indexOf($(this).val()) == -1) $(this).val("");
    // if(!$.inArray($(this).val(), vResponse)) $(this).val("");
});
页: [1]
查看完整版本: JS改变$(this).val()的问题。