2016-05-14 2 views
1

Я искал какое-то время без результатов, поэтому я решил спросить вас, ребята. :)jQuerys .val() не устанавливает значение начальной загрузки

У меня есть некоторые Bootstrap-входы, такие как:

<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() не множества й e значение входного поля. Я должен дополнительную добавить строку типа

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

или объединить его как

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

В actuall код я хочу использовать, чтобы выбрать соответствующий элемент и опорожнить это:

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

(выберите Вход из X входов, содержащих строку)

Но поскольку я использую бутстрап, я должен явно указывать установить значение с помощью .attr()

Есть ли некоторые недостающие или это единственный способ сделать это?

Here is a Fiddle

+0

просто выбрать элемент, содержащий указанную строку затем слейте ?? –

+0

@ShadyAlset Да. Фактически это карта элемента canvas, где пользователь может выбрать нарисованный узел, щелкнув на карте. Это заполнит значение в поле ввода. когда он снова выбирает его, поле ввода должно быть опущено. поскольку есть 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');устанавливает значение в .Атрибуты

    $('#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 с его селектором. Поэтому вместо этого мы захватываем все входы и возвращаем список элементов, где свойство «value» соответствует нашей строке поиска. Вместо использования grep вы можете использовать цикл for, map и т. Д. И, возможно, быстрее выполнять поиск.

+1

ваше решение верно, но решение Pavans немного короче. Фактически то же самое, но используемый jquery выглядит немного лучше :) все еще +1 отсюда, и я надеюсь, что все люди, которые прочтут это сообщение, также проголосуют за это. – Dwza

Смежные вопросы