2011-06-07 53 views
1

我想切換隱藏輸入的值,在高級正常?但下面的腳本不起作用,沒有任何反應。切換輸入隱藏值的問題

$('#advancedLink').click(function() { 
    $("#searchType").val($(this).text() == 'normal' ? 'advanced' : 'normal'); 
    return false; 
}); 

但是,如果我切換的正常地方先進它會工作一段時間,但如果我再次點擊它不會切換回正常。

$('#advancedLink').click(function() { 
    $("#searchType").val($(this).text() == 'normal' ? 'normal' : 'advanced'); 
    return false; 
}); 

但這最後一條路對我來說似乎相當不直觀。有任何想法嗎?

編輯
這是渲染HTML

<div> 
    <div class="left" id="searchControl"> 
     <a id="advancedLink" href="#">Advanced search</a><br> 
    </div> 
    <input type="hidden" value="normal" name="searchType" id="searchType"> 
</div> 
+0

你能張貼的鏈接,並輸入HTML? – kapa 2011-06-07 12:50:38

+1

'advancedLink'的'text'值是否改變過?否則你告訴你的腳本「如果advancedLink讀取'正常'」......這不會發生,當然 – 2011-06-07 12:50:39

回答

2

您正在檢查鏈接的值,但設置了文本框的值。由於鏈接的值永遠不會更改,因此文本框的值也不會更改。

這裏有一個小提琴:http://jsfiddle.net/GKfWB/

$('#advancedLink').click(function() { 
    $("#searchType").val($('#searchType').val() == 'normal' ? 'advanced' : 'normal'); 
    console.log($("#searchType").val()) 
    return false; 
}); 
+0

這有助於。基本上問題是(我認爲)'this'沒有引用'#searchType'而是#advancedLink'。 – Niklas 2011-06-07 13:52:34

+0

@Niklas,這是正確的。既然你觸發點擊'this'指的是鏈接,而不是你的隱藏元素。 – JohnP 2011-06-07 13:55:57

1

嘗試運行:

$('#advancedLink').click(function() { 
    console.log($(this).text()); 
    return false; 
}); 

,看看是怎麼回事。可能您必須將.text()更改爲.val()

0

不知道這是連你想沒有一些例如HTML做什麼。 (嘗試建立的jsfiddle您的問題)

下面就來解決可能出現的問題的嘗試: http://jsfiddle.net/infernalbadger/JF4tg/

$('#advancedLink').click(function() { 
    $("#searchType").val(function() { 
     return $(this).val() == 'normal' ? 'advanced' : 'normal'; 
    }); 
    return false; 
});