2013-09-24 75 views
0

嗨即时尝试验证jQuery验证一些jquery星星。我已经在这里找到了一些关于这个的答案,但是两次都没有运气。验证jQuery评级明星

下面是HTML中查看源代码的原因IM上轨

但其没有工作,我如何可以验证该评级明星,让他们强制要求,XD! thanks..i一直在寻找到这天,请帮助 -

,正如我说,我曾尝试在其他问题的答案,但他们不是为我工作

<div id="pasescortos"> 
    <label for="attribute">Short passes</label> 
<span class="star-rating-control"> 
<div class="rating-cancel"><a title="Cancel Rating"></a></div> 
<div class="star-rating rater-0 star star-rating-applied star-rating-live" id="player_short_passes_1"> 

<a title="1">1</a></div><div class="star-rating rater-0 star star-rating-applied star-rating-live" id="player_short_passes_2"> 

<a title="2">2</a></div><div class="star-rating rater-0 star star-rating-applied star-rating-live" id="player_short_passes_3"> 

<a title="3">3</a></div><div class="star-rating rater-0 star star-rating-applied star-rating-live" id="player_short_passes_4"> 

<a title="4">4</a></div><div class="star-rating rater-0 star star-rating-applied star-rating-live" id="player_short_passes_5"> 

<a title="5">5</a></div></span> 

<input class="star star-rating-applied" id="player_short_passes_1" name="player[short_passes]" type="radio" value="1" style="display: none;"> 

<input class="star star-rating-applied" id="player_short_passes_2" name="player[short_passes]" type="radio" value="2" style="display: none;"> 

<input class="star star-rating-applied" id="player_short_passes_3" name="player[short_passes]" type="radio" value="3" style="display: none;"> 

<input class="star star-rating-applied" id="player_short_passes_4" name="player[short_passes]" type="radio" value="4" style="display: none;"> 

<input class="star star-rating-applied" id="player_short_passes_5" name="player[short_passes]" type="radio" value="5" style="display: none;"> 

    </div> 

这里是JS。

$().ready(function() { 

    // validate signup form on keyup and submit 
$(".edit_player").validate({ 
ignore:'', // initialize the plugin 
     errorElement: 'div'}); 




$("#player_position").rules("add", { required: true, messages: { required: "<%= t('generales.camporequerido') %>"}}); 

$("#player_short_passes_1").rules("add", { required: true, messages: { required: "<%= t('generales.camporequerido') %>"}}); 


$("#player_dominant_leg").rules("add", { required: true, messages: { required: "<%= t('generales.camporequerido') %>"}}); 

}); 





jQuery.extend(jQuery.validator.messages, { 
    required: "<%= t('generales.camporequerido') %>", 
    remote: "Please fix this field.", 
    email: "Ingresa un correo electrónico válido.", 
    url: "Please enter a valid URL.", 
    date: "Please enter a valid date.", 
    dateISO: "Please enter a valid date (ISO).", 
    number: "Please enter a valid number.", 
    digits: "Please enter only digits.", 
    creditcard: "Please enter a valid credit card number.", 
    equalTo: "Please enter the same value again.", 
    accept: "Please enter a value with a valid extension.", 
    maxlength: jQuery.validator.format("Please enter no more than {0} characters."), 
    minlength: jQuery.validator.format("Please enter at least {0} characters."), 
    rangelength: jQuery.validator.format("Please enter a value between {0} and {1} characters long."), 
    range: jQuery.validator.format("Please enter a value between {0} and {1}."), 
    max: jQuery.validator.format("Please enter a value less than or equal to {0}."), 
    min: jQuery.validator.format("Please enter a value greater than or equal to {0}.") 
}); 

EDIT1:

我有我的形式有这个NOVALIDATE的HTML收视源= “”

<form accept-charset="UTF-8" action="/player_steps/skills?locale=en" class="edit_player" id="edit_player_17" method="post" novalidate="novalidate"> 

奇怪的是,我没有在Rails的意见NOVALIDATE标签通知,这是在jquery.validate.js中产生的吗?

这是我在钢轨中的形式。

<%= form_for @player, :url => wizard_path do |f| %> 

在关于doble id问题的jquery.rating.js我发现这个..我该如何解决它?

// insert rating star 
      var star = $('<div class="star-rating rater-'+ control.serial +'"><a title="' + (this.title || this.value) + '">' + this.value + '</a></div>'); 
      rater.append(star); 

      // inherit attributes from input element 
      if(this.id) star.attr('id', this.id); 
      if(this.className) star.addClass(this.className); 
+0

,什么是问题? –

+0

如果即时通讯试图验证,我不能,无论如何..我会编辑的问题,谢谢! –

回答

1

你是在正确的轨道上,但你有一些小错误。

首先,你有两件具有相同ID的东西 - 每个星星一个,每个无线电一个。每个元素只能有一个唯一的ID。当在这种情况下调用$("#player_short_passes_1")时会发生什么情况,变得未定义(最有可能的是,您获得了具有该ID的第一个创建的元素)。一个更好的办法来设置这些规则将仅仅通过增加一个rules选项将调用validate:

$(".edit_player").validate({ 
    ignore:'', // initialize the plugin 
    errorElement: 'div', 
    rules: { 
     'player[short_passes]': { 
     required:true 
     } 
    } 
}); 

请记住,规则由输入定义,而不是ID。请注意,player[short_passes]键必须在规则对象中引用,否则JavaScript将引发错误。

另一件事就是确保.edit_player实际上是一种形式。 jQuery验证只适用于表单,不像div。

工作示例(ISH - 我没有得到明星的插件,所以你只需要点击一个号码):http://jsfiddle.net/ryleyb/RghSK/

+0

好吧,只是想指出这一点,该双ID是由我的评级js文件生成的,导致在RAils vies中,我只是生成单选按钮......这些div不在html中,它们在您运行该站点后出现..我如何改变这个ID? im lost there –

+0

我只是编辑问题的底部 –

+0

老实说,你不需要修正它 - 只需按照我的建议,按名称引用输入。在我的例子中你会看到我留下了双ID。谁写的插件应该可能会通知:) – Ryley