这是原先一次使用html()来判断DOM中input是否有某值时发现的一个问题。

假定有一HTML片断,其html()是:

<input type="text" name="val" value="val" placeholder="" >

然后对input设置新值:

$('#val').val('new value');

对DOM的input元素设置值时,并没有直接在DOM上体现,所以设置前和设置后其html()结果完全一样。

假如我是通过 attr 来设置DOM的属性值时,可以达到我预期的结果。

$('#val').attr('va', 'new value');

按我猜想当对DOM的value进行操作时,由于需要保留原始默认值,还记得一个表单的 type="reset" 吗?所以对于value的只存于内存当中。只会对首次加载页面有效。

attr 实际是通过 setAttribute 来修改DOM对象,这里我又尝试一个有意思的代码。

ipt.attr('type', 'number')

原先是一个 type="text" 被我强制修改为 number,页面也立即变为 number 表单样式。

以上。