2013-06-11 24 views
0

我有一個表單項目列表 - 一個名稱和一個複選框刪除項目。jquery的以前的表單

<input value="www…" name="web[]" type="text" class="siteName"/> 
<input name="delete" type="checkbox" value="delete" class="delete"/> 

我創造了這個讓文本字段被清空,但值存儲在該複選框如果它被誤認爲這兩個項目之間交換的字段值。

<script type="text/javascript"> 
$(function() { 
    $('.delete').change(function(){ 
     var oldVal = $('.siteName').val(); 
     $('.siteName').val($(this).val()); 
     $(this).val(oldVal); 
    }); 
}); 
</script> 

如果有所有被改變的形式,項目多組,我可以將它設置,使以前的「.siteName」形式的項目是唯一一個改變(我試過.prev()無濟於事,但不使用如何正確使用它)。我可以很容易地創建腳本的多個實例併爲類名編號,但我原以爲會有更優雅的解決方案。

回答

2

是..using this參考,並prev()

$('.delete').change(function(){ 
    var siteEle=$(this).prev(); 
    var oldVal = siteEle.val(); 
    siteEle.val($(this).val()); 
    $(this).val(oldVal); 
}); 

或最接近()

$('.delete').change(function(){ 
    var siteEle=$(this).closest('.siteName'); 
    var oldVal = siteEle.val(); 
    siteEle.val($(this).val()); 
    $(this).val(oldVal); 
}); 

closest()可能不會給你正確的價值觀,如果櫃面站點名稱輸入再次啓動旁邊的複選框。 。所以如果你確定前面的元素是輸入類siteName那麼prev()更好

+0

謝謝 - 這幾乎就是我試過的東西,什麼都不起作用,然而正如你所說的那樣,我堅持不懈地發現,因爲我把複選框包裝在標籤標籤中--IT使得腳本不是工作出於某種原因 – Tomate

+0

y ...這是因爲你以前的元素將是標籤..並將無法找到該'val()'...無論如何高興你想出了自己...並很高興它幫助...編碼快樂 – bipen

+1

事情是我有腳本說.prev('。siteName'),所以認爲它應該剛剛找到該類的以前的實例 - 認爲這是奇怪的。沒關係讓它工作。 – Tomate

1
$(function() { 
    $('.delete').change(function(){ 
     var $myPrevSiteName = $(this).prev('.siteName'); 
     var oldVal = $myPrevSiteName.val(); 
     $myPrevSiteName.val(this.value); 
     $(this).val(oldVal); 
    }); 
}); 
+1

謝謝 - 這幾乎就是我試過的,什麼都不起作用,但正如你所說的那樣,我堅持不懈地發現,因爲我把複選框包裝在標籤標籤中--IT使腳本不適用於某種原因 – Tomate

1

我覺得我沒有退出明白你的問題,但讓我試試,你想達成這樣的

http://jsbin.com/ajavul/2/edit

而不是使用上一個()我包的每在父標籤中的輸入框和複選框,然後我應用你給jQuery代碼做一些小的改動。如果這不是您試圖實現的目標,請提供更多信息。

+0

這是一個很好的解決方案 - 其他人做過的工作如此之多已經整合了一段時間。謝謝 – Tomate