2016-05-10 3 views
0

Существует HTML-следующим образом:Jquery возвращает старое значение для элемента на обновления

<input id="currency_factor" type="text" style="display:none;" value="20"/> 

И есть функция JQuery:

$(document).ready(function(){ 
    var currency_factor = $('#currency_factor').val() 
    alert(currency_factor); 
} 

После обновления HTML линии показывает в браузере как :

<input id="currency_factor" type="text" style="display:none;" value="0"/> 

Но JQuery возвращает 20.

Почему это происходит?

+0

после перезагрузки он возвращает 20? – guradio

+1

Попробуйте 'alert ($ ('# currency_factor'). Val())' вместо того, чтобы использовать переменную для сохранения значения, работает ли она? –

+0

Я пробовал это, он возвращает то же значение. – Shruti

ответ

1

Попробуйте добавить это в заголовок вашего HTML-файла, чтобы отключить кэширование:

<meta http-equiv="Cache-Control" content="no-store" /> 

Есть на самом деле число управляющих тегов кэша, которые могут или не могут быть необходимы, в зависимости от браузеров используется. Вот еще одна посылка на StackOverflow, в котором перечислены некоторые из них: Using <meta> tags to turn off caching in all browsers?

+0

Фактически, фрагмент является частью более крупного проекта. Поэтому я не могу отключить кеширование для всей страницы. – Shruti

+0

Как показывают ваши эксперименты, проблема связана с кэшированием. Когда вы отключите кеш или используете инструменты отладки браузера, вы получите правильный результат. Если вы не можете отключить кеширование, то, возможно, вы можете использовать XHR-вызов (Web API) для извлечения значения и вставки его на страницу. Это также позволит вам обновить одно поле (или сколько угодно полей) без перезагрузки всей страницы. – jdigital

+0

Спасибо, я попробую использовать XHR. – Shruti

0

Попробуйте сначала его инициализации, а затем установив его

$(document).ready(function(){ 
    var currency_factor = 0; 
    currency_factor = $('#currency_factor').val() 
    alert(currency_factor); 
} 
+0

Пробовал. Он не работает. – Shruti

+0

, пожалуйста, попробуйте обновить браузер, нажав Ctrl + F5 – brk

0

Есть ли у вас, возможно, есть более чем один элемент с id из currency_factor. Вероятно, будет возвращено значение первого.

Другая возможность заключается в том, что значение изменяется после выполнения функции $(document).ready(). Попробуйте запустить $('#currency_factor').val() в консоли браузера после загрузки. Если он возвращает 0, тогда было изменено после загрузки страницы.

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