2016-05-14 39 views
1

我正在寻找一段时间,没有结果,所以我决定问你们。 :)jQuerys .val()没有设置自举输入值

我有这样一些引导-输入:

<input class='form-control' id='start_name' /> 
<input class='form-control' id='end_name' /> 

Normaly我将选择等

var myValue = $('#start_name').val(); 

的问题我已经是,我想选择包含指定字符串的元素数据之前获得的设置如下:

$('#start_name').val('foobar'); 

显然.val()未设定输入字段的值。我不得不额外添加一行

$('#start_name').attr('value', 'foobar'); 

或结合它像

$('#start_name').val('foobar').attr('value', 'foobar'); 

在实际工作中的代码,我想用它来选择相关的元素,并清空它是:

$("input[value='" + theSpecifiedValue + "']").val(''); 

(从X输入中选择包含字符串的输入)

但是由于我使用引导程序,我不得不明确必须设置值.attr()

有没有一些即时失踪或这是唯一的方法吗?

Here is a Fiddle

+0

只是选择包含指定字符串的元素然后清空它? –

+0

@ShadyAlset是的。其实它是一个画布元素地图,用户可以通过点击地图选择一个绘制的节点。这将在输入字段中填入一个值。当他再次选择它时,输入字段应该是空的。由于有2个输入,因此脚本应检查所选节点名出现在哪个节点上并将其清空。当然,尽可能减少代码:) – Dwza

+0

感谢您的解释,请参阅我的答案,我希望这是您所需要的。 –

回答

2
  1. 如果使用$('#start_name').val('here') $('#start_name').prop('value','here')的值赋给 THIS.VALUE

    $('#start_name').val(); // here

    与价值

    $('body input').filter(function() { return this.value == 'here' }).val('gone'); 
    
  2. 搜索正在设定值 这个。属性

    $('#start_name').attr('value'); // here1

    ,并用值到搜索

    $("body").find("input[value='here1']") 
    
+0

我认为第一个解决方案就是即时搜索。其实第二个是我现在正在做的。但我必须确定观点,而不仅仅是属性。 – Dwza

-1

尝试

$(function() { 
     $("body").find("input[value='" + theSpecifiedValue + "']").val(''); 
}); 
+0

对不起,使用'$(“input [value ='”+ theSpecifiedValue +“'”)“val('');''我刚刚添加了一个小提琴:) – Dwza

1

位的一种迂回的方式,但我们可以做

$($.grep($("body").find("input"),function(e,i){ return e.value === myValue })).val('gone');

jQuery选择使用文字HTML选择。使用.val()设置值可设置html对象的属性“值”。它不会设置更改HTML中的文本文本,这是jQuery与其选择器一起使用的内容。因此,我们抓住所有输入并返回属性“值”与我们的搜索字符串匹配的项目列表。您可以使用for循环,map等来代替使用grep,并可能使查找速度更快。

+1

您的解决方案是正确的,但Pavans解决方案是有点短。 Actully是一样的,但用过的jquery看起来更好一些:)仍然是来自这里的+1,我希望所有阅读这篇文章的人都会投票赞成。 – Dwza