2017-05-16 13 views
1

姓と名が正しくないフォームがあります。だから私は、ユーザーの正しい姓と名を隠された入力にしました。しかし、私のクエリは、その値を私の隠された入力の値に変更するのではなく、私のコードに何が間違っているのか分かりません。ここでは私がやっていることとのjsfiddleですhttps://jsfiddle.net/9xmz94bq/2/入力のデフォルト値を非表示入力の値に変更する

私のjqueryは、元のファイルは、私は変更したいものを含む特定の入力値を入力するjsを読み込むため、私はタイマーを持って、私は待つ必要がありますそれは何も変更する前に行われるように:あなたはあなたのコードに見れば

setTimeout(function() { 
    var firstName = $('#ShipBillInformation_txtShipToFirstName_NewHTML').val(); 
    var lastName = $('#ShipBillInformation_txtShipToLastName_NewHTML').val(); 

    var hiddenFirstName = $('body').find('input[name="ShopperFirstName"]').val(); 
    var hiddenLastName = $('body').find('input[name="ShopperLastName"]').val(); 

    $(firstName).val($(hiddenFirstName).val()); 
    $(lastName).val($(hiddenLastName).val()); 
}, 1000); 
+1

:ここ

setTimeout(function() { // Convention: Store references to DOM elements in $... var $firstName = $('#ShipBillInformation_txtShipToFirstName_NewHTML'); var $lastName = $('#ShipBillInformation_txtShipToLastName_NewHTML'); // Convention: Store strings in normal variable names without $ var hiddenFirstName = $('body').find('input[name="ShopperFirstName"]').val(); var hiddenLastName = $('body').find('input[name="ShopperLastName"]').val(); // Set the value of jQuery object to string $firstName.val(hiddenFirstName); $lastName.val(hiddenLastName); }, 1000); 

は、概念実証例です。 '$(firstName).val(hiddenFirstName);を試してください; – Daniel

答えて

2

であるが、それは間違っていたたものは非常に明白である:firstNameはの値であり、入力。 $(firstName)はあなたに要素への参照を与えません。あなたの他のすべての変数にも同じことが当てはまります。

$(...)は単にjQueryオブジェクトを返します。そのため、値を設定するために、次の操作を実行できます。

  1. ストア示す<input>要素を変数に、$$firstName$lastNameすなわちを開始します。これらはjQueryオブジェクトで、追加のjQuery関数をチェーンすることができます。
  2. $のない変数、つまりhiddenFirstNameおよびhiddenLastNameのない要素の値(Stringタイプ)の非表示の<input>の値を格納します。これらはであり、のjQueryオブジェクトではありません。$(...)にラップしても何も行いません。

これらの表記法は、あなたのコードをすばやく見ているときに、どの変数がjQueryオブジェクトを参照しているのか、単に通常のJS変数であるのかを簡単に区別できるため、 `hiddenFirstName`はvarとないjQueryオブジェクトであることを

$(function() { 
 
    setTimeout(function() { 
 
    var $firstName = $('#ShipBillInformation_txtShipToFirstName_NewHTML'); 
 
    var $lastName = $('#ShipBillInformation_txtShipToLastName_NewHTML'); 
 

 
    var hiddenFirstName = $('body').find('input[name="ShopperFirstName"]').val(); 
 
    var hiddenLastName = $('body').find('input[name="ShopperLastName"]').val(); 
 

 
    $firstName.val(hiddenFirstName); 
 
    $lastName.val(hiddenLastName); 
 
    }, 1000); 
 

 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="ContactField"> 
 
    <label>First Name:</label><br> 
 
    <input class="Input_Style required valid" name="txtShipToFirstName" id="ShipBillInformation_txtShipToFirstName_NewHTML" type="text" value="DefaultFirstName"> 
 
</div> 
 

 
<div class="ContactField"> 
 
    <label>Last Name:</label><br> 
 
    <input class="Input_Style required" maxlength="30" name="txtShipToLastName" id="ShipBillInformation_txtShipToLastName_NewHTML" type="text" value="DefaultLastName" onfocus="if (this.value=='Last Name') this.value='';" onblur="if (this.value=='') this.value='';"> 
 
</div> 
 

 
<input type="hidden" name="ShopperFirstName" value="MyFirstName"> 
 
<input type="hidden" name="ShopperLastName" value="MyLastName">

+0

完璧!私は変数の前に$を置くことは何もなかった、ありがとう! – xohbrittx

+0

いいえ、 '$'を変数の前に置いても何も変わりません。 'var $ foo'は' var foo'と変わりありません。 – Terry

0

おそらく何が必要なのこの

setTimeout(function() { 
    var firstName = $('#ShipBillInformation_txtShipToFirstName_NewHTML'); 
    var lastName = $('#ShipBillInformation_txtShipToLastName_NewHTML'); 

    var hiddenFirstName = $('body').find('input[name="ShopperFirstName"]').val(); 
    var hiddenLastName = $('body').find('input[name="ShopperLastName"]').val(); 

    firstName.val(hiddenFirstName); 
    lastName.val(hiddenLastName); 
}, 1000); 
関連する問題