7

私が持っているもの

マークアップを直接編集できないテキストフィールドがあります。

<input type="text" name="email" value="Email Address" id="subscribe-field" 
onclick="if ( this.value == 'Email Address' ) { this.value = ''; }" 
onblur="if ( this.value == '' ) { this.value = 'Email Address'; }">

必要なもの

テキストフィールドがクリックされたか、クリックされたか、クリックされたかに関係なく、テキストフィールドの値を空白にする必要があります。

私が試したこと

値を無効にできます:

$('#subscribe-field').val('');

onclickとonblurの値を無効にしようとしました:

$('#subscribe-field').click(function() { return false; });
$('#subscribe-field').off('click');
$('#subscribe-field').unbind('click');

...ただし、テキストフィールドの外側をクリックするとすぐに値が再表示されます。

私の質問

上記のマークアップからonblur値を削除するにはどうすればよいですか?

4

2 に答える 2

11

この方法を試してください:

$('#subscribe-field').removeAttr('onclick');

$('#subscribe-field').removeAttr('onblur');

于 2012-10-11T11:10:37.087 に答える
1

インラインJavaScriptを削除する必要があります。jsfiddle。を使用jQuery.oneすると、フォーカスイベントが1回だけ呼び出されるようになります。

<input type="text" name="email" value="Email Address" id="subscribe-field" />



$('#subscribe-field').one('focus',function() { 
            this.value = ''; 
       return false; 
});

更新:mahmoudが提案しているように、htmlを編集できない場合は、onClick属性とonBlur属性を削除する必要があります。

offまた、インラインではないunbindjQueryclickイベント のバインドを解除onclickし、falseを返すと、インラインonClickが最初に呼び出されるため、問題は解決されません。

于 2012-10-11T11:09:16.757 に答える