-1

2つの入力があるフォームがあります

<input type="text" name="keyword" value="Search" onfocus="wipe(this)"/>
<input type="text"  name="city" value="City" onfocus="wipe(this)"/>

そして、マウスでクリックするとすぐにフォームフィールドのプリセット値を取り除く私のJavaScriptは次のとおりです。

function wipe(obj)
{
obj.value="";
}

私の質問は、ユーザーが都市フィールドに何も入力しないと言うことです。フォームが送信されたときに、そのフィールドの値が空であり、Cityという単語ではないようにするにはどうすればよいですか?

ありがとう

4

7 に答える 7

2

ここで間違ったテクニックを使用しています。IEを除くほとんどの主要なブラウザでサポートされているプレースホルダーを使用する必要があります。したがって、これが問題にならない場合は、間違いなくそれを使用する必要があります。特に、そのフィールドのラベル要素がある場合。それ以外の場合は、送信時にその入力値をチェックし、それが文字列の都市と等しいかどうかを確認する必要があります

于 2012-09-05T12:26:12.217 に答える
2

プレースホルダー は、このテキストボックスの表示に値を使用することに慣れている場合に、過去の履歴で問題を解決できる優れた属性です。

 <input type="text" name="keyword" placeholder="Search" />

それでもJavaスクリプトを使用したい場合は、次のようにコードを変更してください

<input type="text" name="keyword" value="Search" onfocus="wipe(this,'Search')" onblur="wipe2(this,'Search')"/>
<input type="text"  name="city" value="City" onfocus="wipe(this,'City')" onblur="wipe2(this,'City')"/>

2番目のアプローチのスクリプト関数

function wipe(obj, str)
{
if(obj.value!=str){
obj.value="";}
}

function wipe2(obj, str)
{if(obj.value==""){
obj.value=str;}
}
于 2012-09-05T12:40:24.823 に答える
1

提出時にチェックしてみませんかvalue='city'

if(obj.value!='city')
{
    //your code here
}

または、jqueryの使用透かしプラグインの使用に問題がない場合、これはブラウザの互換性の問題も処理します

Jqueryウォーターマーク

于 2012-09-05T12:23:38.493 に答える
1

変数hasChangedを宣言し、ワイプ関数が呼び出されたときにtrueに設定します。次に、[送信]ボタンのonclick関数で「SubmitFunction()」などの関数を呼び出します。

<input type="text" name="keyword" value="Search" id="Search" onfocus="wipe(this)"/>
<input type="text"  name="city" value="City" id="City" onfocus="wipe(this)"/>
<input type="submit"  name="submit" value="submit"  onclick="SubmitFunction();"/>
var hasChanged=false;
function wipe(obj)
 {
  hasChanged=true;
  obj.value="";
 }
function SubmitFunction()
 {
 if(hasChanged==false)
  {

   $("#City").val('');
  }
 }
于 2012-09-05T12:27:31.780 に答える
0

これを試して:

if($('input[name="city"]').val() && $('input[name="city"]').val() != 'city') { yourform.submit(); }
于 2012-09-05T12:23:50.707 に答える
0

これに対するいくつかの解決策については、入力時に消えるプロンプトテキスト(jQuery)を入力テキストフィールドに事前入力する方法を参照してください。HTML5を使用しても問題がない場合、最善の解決策はおそらく「値」ではなく「プレースホルダー」を使用することです。

于 2012-09-05T12:27:15.930 に答える
0

<input type="text" name="keyword" default="Search" value="Search" onfocus="wipe(this)"/>value属性と同じ値を持つもう1つの属性(例:default)を追加する必要があります。

送信時に各フォームフィールドを比較します

function onSubmit(){
    for (var fields in form)
      if(form[fields].value== form[fields].getAttribute("default")){
          form[fields].value = "";
      }
   }
}
于 2012-09-05T12:32:06.837 に答える