2015-03-12 5 views
0

У меня возникла проблема с изменением текста с ввода. Вход загружается с некоторым текстом, который я получаю из базы данных, и с опцией я должен принять значение onlyread attr и изменить значения. Это нормально, но когда я нажимаю кнопку сохранения после записи чего-то еще на входах, он получает старые значения с .val(). Как я могу получить новые?Как получить измененный текст из ввода JQuery или javascript

Код выглядит примерно так.

var anInput = $("#anInput").val(); //gets old value 
    var otherInput = $("#otherInput").val(); //gets old value 
    $.ajax({ 
      type: "POST", 
      dataType: "html", 
      success: doSomething, 
      timeout: 4000, 
      error: someProblems, 
      url: "modules/mod.php", 
      data: {anInput: anInput, otherInput: otherInput} 
    }); 

Я добавил код AJAX, чтобы упомянуть, что мне нужны значения, чтобы что-то сделать. AJAX работает.

Я знаю, что это можно сделать с помощью формы, но это перезагрузит страницу, и я не хочу этого.

Извините за мой ржавый английском и спасибо :)

EDIT: Возможно, я не правильно говорить, когда говорят «изменить значения», что я делаю, выделив текст и писать что-то еще.

Я показать некоторую информацию с входами, нажмите кнопку, которая позволяет мне изменить, ввести некоторый новый текст входов, а затем нажмите кнопку «сохранить»

HTML является genereted другого AJAX

<div class="infoVideo"> 
    <input id="anInput" value="someTextFromDataBase"> 
    <input id="otherInput" value="someTextFromDataBase"> 
    <input type="button" id="btnMod"> 
    <input type="button" id="btnSave"> 
</div> 

Если я стираю и что-нибудь еще во входном .val() стареет someTextFromDataBase

+1

Можете ли вы показать пример, где это происходит? Возможно, возможно. – aa333

+1

Можете ли вы объяснить, что вы подразумеваете под «с опцией, я должен взять« onlyread »attr off и изменить значения»? Нам нужно увидеть, как вы устанавливаете новые значения, чтобы мы могли понять, почему '.val()' не правильно подбирает новые значения. – GregL

+0

Я показываю некоторую информацию с входами, нажимаю кнопку, которая позволяет мне изменять, вводить новый текст на входах, а затем нажать «сохранить» – nicomv95

ответ

1

Редактировать: согласно догадке в моих комментариях, там было больше, чем один #anInput на странице, так что код был только получение значения из первый, который не редактировался. Решение состоит в том, чтобы не иметь дубликатов значений id в HTML-странице страницы.


Я подозреваю, что ваш код действительно не похож на вас. Вы, вероятно, делают это:

var anInput = $("#anInput").val(); //gets old value 
var otherInput = $("#otherInput").val(); //gets old value 

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

data: {anInput: anInput, otherInput: otherInput} 

к этому:

data: {anInput: $("#anInput").val(), otherInput: $("#otherInput").val()} 

Таким образом, вы всегда получения последней и наибольшие значения прямо перед вашим вызовом Ajax.

+0

На самом деле это все равно, что я показываю. Я пробовал это, но это то же самое. Я меняю текст во входном файле, просто пишу поверх старого текста – nicomv95

+0

@ nicomv95. Затем значения на самом деле не меняются во входе. Покажите нам HTML и код, который вы используете для их изменения. Вероятно, в этом что-то не так. – jfriend00

+0

Я добавил html-код. Я меняю его вручную с помощью моей клавиатуры, но это не обновляет значение – nicomv95

0

Пожалуйста, подтвердите формат данных, возвращаемых mod.php. Блок AJAX ожидает получить текст в формате HTML dataType: 'html', - но вы отправляете json, так это то, что вы ожидаете назад?

Если это примечание не раскрывает решение, то, пожалуйста, покажите нам свою функцию doSomething - это то, где обрабатываются возвращенные данные.


Возможно, вы уже пробовали это уже, но что произойдет, если вы сделаете это:

var anInput = $("#anInput").val(); //gets old value 
alert(anInput); 
var otherInput = $("#otherInput").val(); //gets old value 
alert(otherInput); 

$.ajax({ //etc }); 
+0

AJAX не проблема. Проблема до того, как она доберется туда, на двух строках раньше. Я проверяю элемент, а переменные anInput и otherInput имеют неправильную информацию. .val() сохраняет информацию html в переменных, но я хочу, чтобы информация, которую я написал во входном файле – nicomv95

+0

Это показывает мне старую информацию. Я считаю неправильным то, что ввод нового текста непосредственно во входном файле не меняет значение. Как я могу получить то, что я набрал на вкладке? – nicomv95

+0

Нет лучшего способа. Если вы используете 'var myVar = $ ('# elementID'). Val();' тогда вы *** будете получать текущее содержимое этого элемента. Что-то еще происходит. http://jsfiddle.net/8779nnvo/ – gibberish

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