在使用Javascript OnBlur OnFocus执行AJAX存储之前检查表单字段中的更改?怎么样?

时间:2012-04-11 23:02:41

标签: javascript compare onblur onfocus

我目前正在每个onblur上执行AJAX查询存储,如果this.value不等于'',但是对于用户通过表单进行选项而不更改任何内容,这是一个疯狂的数据库查询命中数量(并且是,我检查实际数据库查询脚本的更改,但仍然。)

这是我目前正在做的事情:

<input type="text" name="EUName" id="EUName" value="[whateverdynamicvalue]"
class="contentextformtxt" onblur="if (this.value == '') 
{this.value = '[whateverdynamicvalue]';} else { UpdateEUData();return false; } " />

其他人显然是通过AJAX提交表单。

我想做的是使用OnFocus来捕获User OnFocuses时的内容,然后针对this.value OnBlur检查它是否有任何变化。我不确定我是否走在正确的轨道上(不是很擅长javascript)但是这就是我到目前为止所拥有的。

<input type="text" name="EUAddress1" id="EUAddress1" value=" [whateverdynamicvalue] "
class="contentextformtxtlarge" onblur="if (this.value == '' || this.value == originalfvalue)
{this.value = ' [whateverdynamicvalue] ';} else { UpdateEUData();return false; } " 
onfocus="Var originalfvalue = this.value" />

我不确定这是否是最佳做法,但不管怎样,它都不起作用。任何关于如何修复的建议都会很棒!最重要的是,我只想找到一种减少服务器流量的方法。我最初只是将它与动态值进行比较,但问题是如果有人将值从值x更改为值y,然后尝试将其更改回值x,显然将其与动态值进行比较将不允许它更新,因为它仍然认为值IS值x,而不是它已被更改为值y。因此,为什么我要弄清楚javascript路线。

任何帮助都会提前得到很多赞赏! JE

1 个答案:

答案 0 :(得分:2)

使用onchange事件。当用户标记或单击字段时会触发它,但与onblur不同的是,只有在实际更改了值时才会触发它。