Javascript - 单击时将输入字段设置为0

时间:2013-05-20 17:31:35

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

我有表单标记

中的输入字段列表
<div class="angefragte_stunden_<%= hour.id%>">
<%= h.text_field :angefragte_stunden %>

代码输出=&gt;

<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)。

试过:

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

没有成功,我对js / coffee不是很有经验。所以帮助会很棒。感谢

Thansk到目前为止.. 现在看来是一个不同的问题.. 当我提交表单时,新值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

4 个答案:

答案 0 :(得分:2)

你需要缩进你的coffeescript电话。 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

答案 1 :(得分:0)

您没有angefragte_stunden

类的元素

如果要使用该选择器,则需要为其提供公共类。

更改

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

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

或使用带有选择器^=的启动,但如果您开始使用其他类,则会很棘手。

答案 2 :(得分:0)

$(document).ready(function(){   
    $('#booking_user_458_angefragte_stunden').click(function() {
      $(this).val(0);
    });
}); 

答案 3 :(得分:-1)

您是否在输入标签内尝试了onClick =“this.value = 0”?