问题切换输入的隐藏值

时间:2011-06-07 12:47:25

标签: jquery

我想在高级正常之间切换隐藏输入的值?但是下面的脚本不起作用,没有任何反应。

$('#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>

3 个答案:

答案 0 :(得分:2)

您正在检查链接的值,但设置文本框的值。由于链接的值永远不会更改,因此文本框值也不会更改。

这是一个小提琴:http://jsfiddle.net/GKfWB/

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

答案 1 :(得分:1)

尝试运行:

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

看看发生了什么。可能你必须将.text()更改为.val()

答案 2 :(得分:0)

如果没有一些示例html,不确定这是否是你想要做的事情。 (尝试为你的问题设置一个jsfiddle)

这是尝试解决可能的问题: http://jsfiddle.net/infernalbadger/JF4tg/

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