2009-11-30 48 views

回答

1

嘗試獲取輸入:文本的.val()代替

+0

一個好主意的兄弟姐妹,是的,但與siblings()函數爲什麼找不到任何東西沒有任何關係。 – tvanfosson 2009-11-30 19:11:35

2

你似乎並不有兄弟姐妹的正確的把握()運算符。您還沒有使用jQuery的val()函數,並且在某些類名稱上缺少句點。要找到地址1類,你需要做到以下幾點:

var $checkbox = jQuery(this); 
$checkbox.parent().siblings('.formField').find('.address1'); 

而且,你會希望告警是

alert($checkbox.parent().siblings('.formField').find('.address1').val()); 

提醒輸入框的值。

固定和優化版本:

function update_address(eventObject) { 
    var $checkbox = jQuery(this); 
    var $siblings = $checkbox.parent().siblings('.formField'); 
    if ($checkbox.attr('checked')) { 
     $siblings.find('.address1').val($('.hidden_address1').val()); 
     $siblings.find('.address2').val($('.hidden_address2').val()); 
     $siblings.find('.city').val($('.hidden_city').val()); 
     $siblings.find('.state').val($('.hidden_state').val()); 
     $siblings.find('.zip').val($('.hidden_zip').val()); 
     $siblings.find('.province').val($('.hidden_province').val()); 
     $siblings.find('.country').val($('.hidden_country').val()); 
    } else { 
     $siblings.find('.address1').val(''); 
     $siblings.find('.address2').val(''); 
     $siblings.find('.city').val(''); 
     $siblings.find('.state').val(''); 
     $siblings.find('.zip').val(''); 
     $siblings.find('.province').val(''); 
     $siblings.find('.country').val(''); 
    }  
} 
0

因爲<input class="address1"/>不是<input id="parent_sameAsBefore"/>兄弟。我想你想要:

checkbox.parent().parent().find('.address1'); 
1

在第9行,應該不是var checkbox = $(this);而是?我還沒有看到像那樣使用jQuery()函數。

+0

urm ... jQuery === $ – James 2009-11-30 19:04:50

+2

可能會在'noConflict'模式下使用jQuery,更多:http://docs.jquery.com/Using_jQuery_with_Other_Libraries – Pablo 2009-11-30 19:05:56

+0

你確實知道$ == jQuery? – 2009-11-30 19:06:01

-1

alert(checkbox.siblings('。address1')。html()); //這應該是

alert(checkbox.parent()。siblings('。address1')。html());

//複選框沒有兄弟姐妹 線10

+0

''元素應該是空的。在HTML中,您不必顯式關閉它們,但在XHTML中,您需要「自我關閉」它們。即'' – James 2009-11-30 19:09:10

+0

@ J-P:感謝您的觀察。他正試圖讓複選框的兄弟姐妹。他會得到空因爲複選框沒有兄弟姐妹。 – Tebo 2009-11-30 19:26:06

0

爲什麼不直接用查找使用絕對路徑表單字段去? 除非你的DOM非常複雜(並且你需要相對路徑),否則我更喜歡這種方法。

也使用.val()來獲取和設置值。

function update_address(eventObject) { 
    if($(this).attr('checked')) { 
    $('#parent_address1').val($('hidden_address1').val()); 
    $('#parent_address2').val($('hidden_address2').val()); 
    $('#parent_city').val($('hidden_city').val()); 
    $('#parent_state').val($('hidden_state').val()); 
    $('#parent_zip').val($('hidden_zip').val()); 
    $('#parent_province').val($('hidden_province').val()); 
    $('#parent_country').val($('hidden_country').val()); 
    }  
    else { 
    $('#parent_address1').val(""); 
    $('#parent_address2').val(""); 
    $('#parent_city').val(""); 
    $('#parent_state').val(""); 
    $('#parent_zip').val(""); 
    $('#parent_province').val(""); 
    $('#parent_country').val(""); 
    }  
} 

注意,似乎是在原代碼中第15行錯誤:

checkbox.siblings('.tate').value = $('hidden_state').value; 

應該是:

checkbox.siblings('.state').value = $('hidden_state').value; 
+0

如果noConflict模式有效,只需在上面的代碼中用$ jQuery替換$ – 2009-11-30 19:33:03

+0

可能爲 checkbox.siblings('。state')。val()= $('hidden_​​state')。val(); ??? – 2009-11-30 19:35:50

+0

這樣會更好,但錯誤是狀態中缺少''':) – 2009-11-30 19:46:28