我今天早上一直在寻找,我找不到任何简单的解决方案...基本上,我想捕获输入元素的变化,但也知道以前的值.
这是一个更改事件和最简单形式的输入元素.显然,我可以使用$(elem).val()来获取新值,但是我是否因为获得之前的值而缺少一个偷偷摸摸的方法?我没有在jQuery API中看到任何东西来执行此操作,但也许有人已经完成了这个并且有一些提示?
<script>
$(document).ready(function(){
$('#myInputElement').bind('change', function(){
//var oldvalue = ???
var newvalue = $(this).val();
});
});
</script>
<input id="myInputElement" type="text">
Run Code Online (Sandbox Code Playgroud)
我不反对编写我自己的解决方案,我只是想确保我不在这里重新创建轮子.
<script>
$("input[name='my_radio_button']").change(function(){
if ($("input[@name='my_radio_button']:checked").val() == 'ONE'){
do_this_stuff();
} else { do_other_stuff(); }
});
</script>
<input type="radio" name="my_radio_button1" id="radio1" value="ONE" checked />
<input type="radio" name="my_radio_button2" id="radio2" value="TWO" />
Run Code Online (Sandbox Code Playgroud)
(假设完整的HTML和脚本在所有准备就绪时触发)
单击以选择单选选项时,更改事件似乎会触发,但在使用键盘更改选择时则不会触发.可以做些什么吗?
编辑 - 如果我使用bind或没有任何区别live- 这只是一个错误吗?
澄清一下,即使失去焦点,事件也不会触发.
编辑2 - 没有人知道这个的原因?
编辑3 - 正如DonaldIsFreak指出这似乎是一个铬问题
我有一个对话框执行依赖于三个输入字段的计算.当它们中的任何一个被更改时,它会检查它们是否全部被填充,如果它们是进程并给出它的响应.
它在FF,Chrome,Opera等中运行得非常好,但在任何版本的IE中它都会停止工作.我的其余jQuery工作正常,但我无法确切地解决问题所在.我认为它可能与.change()事件或多事件绑定有关,但我真的不知道.
这是有问题的代码:
var loan = $("#ltv-loan-amount");
var mortgage = $("#ltv-mortgage");
var property = $("#ltv-property");
$("#ltv-dialog input").change( function() {
if(loan.val() && mortgage.val() && property.val())
{
var ltv = parseInt( ( ( parseInt(loan.val()) + parseInt(mortgage.val()) ) / parseInt(property.val()) )* 1000 );
ltv /= 10;
if(ltv > 0 && ltv < 85)
{
$("#ltv-result").html("<span id=\"ltv-form-result\">" + ltv + "%</span></p><p><a id=\"ltv-link\" href=\"#sidebar-head\">Congratulations, your LTV has passed. Please now proceed with your application opposite.</a>");
$("#amount").val(loan.val());
$("#mortgage_balance").val(mortgage.val());
$("#prop_value").val(property.val());
$("#ltv-link").click(function() {
$( "#ltv-dialog" ).dialog( "close" ); …Run Code Online (Sandbox Code Playgroud) 我有一个项目需要一些值来从HTML无线电更改事件中使用JavaScript进行更新.
由于IE中的某些原因,似乎在收音机失去焦点之前不会调用onchange事件.不幸的是,由于代码的设置方式,我无法使用click事件并且必须使用change事件.
有人知道一种方法,一旦检查更改而不是失去焦点,强制IE提升更改事件?
谢谢.
我有一个显示记录列表的页面.用户可以使用单选按钮选择记录状态,例如:
<div id="record_653">
<label><input type="radio" name="status_653" value="new" checked/>new</label>
<label><input type="radio" name="status_653" value="skipped" />skipped</label>
<label><input type="radio" name="status_653" value="downloaded" />downloaded</label>
</div>
Run Code Online (Sandbox Code Playgroud)
我正在使用JQuery将用户所做的更改发送回服务器,在那里我使用它们来更新数据库.这是我所做的简化版本:
$("#record_653").click(
function(event) {
var url = ...,
params = ...;
post(url,params);
});
Run Code Online (Sandbox Code Playgroud)
问题是,即使用户单击先前检查过的相同按钮,此代码也会创建请求.我真正想要的是"on change"事件,除了它在Internet Explorer中的行为不是很有用(例如这里).
所以我想我不知何故必须确定click事件是否改变了值.
旧值是存储在某个地方(在事件中的DOM?中)所以我可以比较它?
如果没有,我应该如何存储旧值?
好的,我有一个jQuery .change
$('#application').change(function(){
var selected = $(this).val().trim();
alert(selected);
if(selected == 'something') {
$('#profile-info').show();
}
....
....
Run Code Online (Sandbox Code Playgroud)
我的HTML
<select name="application" id="application">
<option value="--select something--">--select something--</option>
<option value="first">first</option>
<option value="second">second</option>
<option value="third">third</option></select>
Run Code Online (Sandbox Code Playgroud)
警报会在所有浏览器上触发,但IE ..... ie8和7根本不起作用
任何想法我可能会失踪
javascript ×5
jquery ×5
html ×2
radio-button ×2
ajax ×1
events ×1
forms ×1
jquery-ui ×1
onchange ×1