【问题标题】:Javascript - set input field to 0 when clickedJavascript - 单击时将输入字段设置为 0
【发布时间】:2013-05-15 07:57:58
【问题描述】:

我有一个表单标签内的输入字段列表

<div class="angefragte_stunden_<%= hour.id%>">
<%= h.text_field :angefragte_stunden %>

代码输出 =>

<div class="angefragte_stunden_458">
<input id="booking_user_458_angefragte_stunden" name="booking_user[458][angefragte_stunden]" size="30" type="text" value="32" />

...

我希望用户可以点击某个输入字段,并且 js 将值(例如 32)替换为 0。

试过了:

$(document).ready ->  
  $(".angefragte_stunden").on "click", ->   
  $(this).val(0)

没有成功,我在 js/coffee 方面不是很有经验。所以帮助会很大。谢谢

到目前为止谢谢.. 现在看来是一个不同的问题.. 当我提交表单时,新值 0 不会保存,而是旧值。如果我手动输入,则存储 0..有什么想法吗?

最终结果:

<%= form_for @hour_user, :url => ..._path, :remote => true, :method => :put do %>
<div class="angefragte_stunden">
<%= h.text_field :angefragte_stunden, :class => "submittable"  %>

咖啡:

$ ->
 $(".submittable").on 'change', ->
  $(this).parents("form:first").submit()
  $(this).effect "highlight", {}, 1500

$ ->
 $(".angefragte_stunden > input").click ->
  $(this).val(0)
  $(this).parents("form:first").submit()
  $(this).effect "highlight", {}, 1500

【问题讨论】:

    标签: javascript ruby-on-rails-3 coffeescript


    【解决方案1】:

    您需要缩进您的咖啡脚本调用。 Coffeescript 的块语法由缩进控制。

    $(document).ready ->  
    $(".angefragte_stunden").on "click", ->   
    $(this).val(0)
    

    相当于js

    $(document).ready(function(){})
    $(".angefragte_stunden").on("click",  function(){})
    $(this).val(0);
    

    你想要的

    $(document).ready ->  
      $(".angefragte_stunden").on "click", ->   
        $(this).val(0)
    

    在js里面是

    $(document).ready(function(){
      $(".angefragte_stunden").on("click",  function(){
        $(this).val(0);
      });
    });
    

    正如 epascarello 指出的那样,您还需要修复您的课程。如果要应用多个类,请在它们之间留一个空格。 $(".angefragte_stunden") 将匹配具有类 angefragte_stunden 但不匹配 angefragte_stunden_458 的元素

    【讨论】:

    • 到目前为止谢谢.. 现在出现了不同的问题.. 当我提交表单时,新值 0 没有保存,而是旧值。如果我手动输入,则存储 0..有什么想法吗?
    • 提交会重新加载页面。如果您想在页面重新加载时保留它,或者使用 ajax 调用进行提交,则需要在开始时设置它。这超出了我可以在评论中真正描述的范围,但谷歌“ajax 表单”你应该能够找到大量信息。
    • 嗨,Ben,谢谢.. 我明白这一点...“开始”是什么意思
    • 页面初始加载时。
    【解决方案2】:

    你没有angefragte_stunden类的元素

    如果你想使用那个选择器,你需要给它一个公共类。

    改变

    <div class="angefragte_stunden_<%= hour.id%>">
    

    <div class="angefragte_stunden angefragte_stunden_<%= hour.id%>">
    

    或使用带有选择器^= 的开头,但如果您开始广告其他类,这会很棘手。

    【讨论】:

    • 是的,不知道,这是一个好点。我只注意到咖啡问题,完全错过了课堂问题。赞成,并更新我的答案,感谢您。
    • 到目前为止谢谢.. 现在出现了不同的问题.. 当我提交表单时,新值 0 没有保存,而是旧值。如果我手动输入,则存储 0..有什么想法吗?
    • 到目前为止我还不明白这次投票...发生了什么?
    【解决方案3】:
    $(document).ready(function(){   
        $('#booking_user_458_angefragte_stunden').click(function() {
          $(this).val(0);
        });
    }); 
    

    【讨论】:

    • 他使用的是coffeescript,而不是javascript。
    【解决方案4】:

    您是否在输入标签中尝试过类似 onClick="this.value = 0" 的内容?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 2021-10-28
      • 1970-01-01
      • 2013-04-12
      • 2013-07-17
      • 1970-01-01
      • 2019-05-07
      相关资源
      最近更新 更多