Prototype或JQuery是否更改隐藏字段的值?

Prototype或JQuery是否更改隐藏字段的值?,jquery,prototypejs,Jquery,Prototypejs,我在更改隐藏字段的值时遇到了一些问题 功能: function remove_fields (link) { $(link).next('input[type=hidden]').value = ''; $(link).up(".open_hours").hide(); } 如果我注释掉$(link).next('input[type=hidden]')。value=''隐藏功能工作。尝试设置该值时出错: $(link).next("input[type=hidden]") i

我在更改隐藏字段的值时遇到了一些问题

功能:

function remove_fields (link) {
    $(link).next('input[type=hidden]').value = '';
    $(link).up(".open_hours").hide();
}
如果我注释掉
$(link).next('input[type=hidden]')。value=''隐藏功能工作。尝试设置该值时出错:

$(link).next("input[type=hidden]") is undefined
下面是我关于函数调用的HTML:

    <div class="monday">

        <div class ="open_hours">
            <li><label for="location_monday">Monday</label>
            Open: 06:29PM - 
            Close: 04:21PM 
            <a href="#" onclick="remove_fields(this); return false;">remove</a></li>

            <li class="hidden optional" id="location_monday_open_input"><input id="location_monday_open" name="location[monday_open]" type="hidden" value="18:29:00" /></li>
            <li class="hidden optional" id="location_monday_close_input"><input class="close" id="location_monday_close" name="location[monday_close]" type="hidden" value="16:21:00" /></li>
  </div>    
</div>

  • 星期一 开放时间:下午6:29- 闭馆时间:下午4时21分

  • 不知道我做错了什么?谢谢大家

    您已经标记了jquery和prototype,在jquery中您可以这样尝试:

    $(link).next('input[type=hidden]').val = '';
    

    您已经标记了jquery和prototype,在jquery中您可以这样尝试:

    $(link).next('input[type=hidden]').val = '';
    
    基于jQuery的答案

    由于您为输入提供了一个id,因此可以使用id选择器

    $("#location_monday_close").val('');
    
    如果您希望获得不基于id的隐藏元素,那么可以使用

    $(link).closest('div.open_hours').find('input[type=hidden]').val('');
    
    另外,如果要隐藏类名为open_hours的div,可以使用

    $("div.open_hours").hide();
    
    我已经为您重新编写了代码

    $(function(){
        $("#anch1").click(function(){
            remove_fields ( $(this) );      
        });
    
        function remove_fields (link) 
        {
            var parentDiv = link.closest('div.open_hours');
            parentDiv.find('input[type=hidden]').val('');
            parentDiv.hide();
        }
    
    });
    
    <div class="monday">
        <div class ="open_hours">
            <li><label for="location_monday">Monday</label>
                Open: 06:29PM - 
                Close: 04:21PM 
                <a id="anch1" href="#" return false;">remove</a>
            </li>
            <li class="hidden optional" id="location_monday_open_input">
                <input id="location_monday_open" name="location[monday_open]" type="hidden" value="18:29:00" />
            </li>
            <li class="hidden optional" id="location_monday_close_input">
                <input class="close" id="location_monday_close" name="location[monday_close]" type="hidden" value="16:21:00" />
            </li>
        </div>    
    </div>
    
    $(函数(){
    $(“#1”)。单击(函数(){
    删除_字段($(this));
    });
    函数删除_字段(链接)
    {
    var parentDiv=链接最近('div.open_hours');
    parentDiv.find('input[type=hidden]').val(“”);
    parentDiv.hide();
    }
    });
    
  • 星期一 开放时间:下午6:29- 闭馆时间:下午4时21分
  • 编辑

    查找选择器紧跟其后的同级(即锚定标记)。在HTML中,锚标记没有下一个同级项。

    基于jQuery的答案

    由于您为输入提供了一个id,因此可以使用id选择器

    $("#location_monday_close").val('');
    
    如果您希望获得不基于id的隐藏元素,那么可以使用

    $(link).closest('div.open_hours').find('input[type=hidden]').val('');
    
    另外,如果要隐藏类名为open_hours的div,可以使用

    $("div.open_hours").hide();
    
    我已经为您重新编写了代码

    $(function(){
        $("#anch1").click(function(){
            remove_fields ( $(this) );      
        });
    
        function remove_fields (link) 
        {
            var parentDiv = link.closest('div.open_hours');
            parentDiv.find('input[type=hidden]').val('');
            parentDiv.hide();
        }
    
    });
    
    <div class="monday">
        <div class ="open_hours">
            <li><label for="location_monday">Monday</label>
                Open: 06:29PM - 
                Close: 04:21PM 
                <a id="anch1" href="#" return false;">remove</a>
            </li>
            <li class="hidden optional" id="location_monday_open_input">
                <input id="location_monday_open" name="location[monday_open]" type="hidden" value="18:29:00" />
            </li>
            <li class="hidden optional" id="location_monday_close_input">
                <input class="close" id="location_monday_close" name="location[monday_close]" type="hidden" value="16:21:00" />
            </li>
        </div>    
    </div>
    
    $(函数(){
    $(“#1”)。单击(函数(){
    删除_字段($(this));
    });
    函数删除_字段(链接)
    {
    var parentDiv=链接最近('div.open_hours');
    parentDiv.find('input[type=hidden]').val(“”);
    parentDiv.hide();
    }
    });
    
  • 星期一 开放时间:下午6:29- 闭馆时间:下午4时21分
  • 编辑

    查找选择器紧跟其后的同级(即锚定标记)。在HTML中,锚定标记没有下一个同级。对于prototype,请执行以下操作:

    function remove_fields(link) {
      var e = link.next().identify();
      $(e).setValue("");
      $(e).up(".open_hours").hide();
    }
    
    在设置值之前,您需要识别/返回元素id。

    对于prototype,请执行以下操作:

    function remove_fields(link) {
      var e = link.next().identify();
      $(e).setValue("");
      $(e).up(".open_hours").hide();
    }
    

    在设置值之前,您需要识别/返回元素id。

    在jquery up中不是函数,但您说jquery?在jquery up中不是函数,但您说jquery?是的,我已经尝试过了。。。因为某种原因,这对我不起作用。。。脚本将无错误运行(FireBug),但当我提交表单时,旧值将被保留?是的,我尝试过。。。因为某种原因,这对我不起作用。。。脚本将无错误地运行(FireBug),但当我提交表单时,旧值将被保留?$(link).closest('div.open_hours').find('input[type=hidden]')).val('';这管用!让我问你为什么这不起作用:$(link).next('input[type=hidden')).val('')?再次感谢请参阅我对答案的编辑。此外,我已经从HTML中删除了onclick,并将其放入脚本中。$(link).closest('div.open_hours').find('input[type=hidden]).val('';这管用!让我问你为什么这不起作用:$(link).next('input[type=hidden')).val('')?再次感谢请看我对答案的编辑。另外,我已经从HTML中删除了onclick,并将其放入脚本中。