值正在传递,但警报在javaScript中不起作用

时间:2014-12-15 14:52:21

标签: javascript php

当用户对特定产品评分时,我希望弹出下面显示的提醒,但它们无效。所有值都来自数据库中的表。输入标签的数据正常工作。

这是我的HTML代码:

<input class="rating form-control input-star-rate" id="<?php if($jfeta3 != null) {  echo $jfeta3['product_id']; } else { echo $rateid; } ?>" name="<?php echo $arate_num; ?>" value="<?php echo $ratea; ?>" data-min="0" data-max="5" data-step="0.3" data-size="xs" style="display: none; text-align: center;"/>

这是我的javaScript代码:

$(function(){
    $(document).ready(function(e) {
        var $stars = $('.input-star-rate');

        $stars.bind('change', function() {
            alert("comon akar");
            var $this = $(this); 
            alert($this);
            var ratingValue = $this.val();
            alert(ratingValue);
            var ratingValue2 = parseFloat(ratingValue);
            alert(ratingValue2);
        });
    });
 });

这是我的PHP代码。

$product_id = $new['id'];
$jsqla3 = mysql_query("select * from user_star_rate where product_id='$product_id' and email='$visit_email'") or die(mysql_error());
$jfeta3 = mysql_fetch_assoc($jsqla3);

if($jfeta3 != null) {
   $ratea = $jfeta3['rate_value'];
   $arate_num = $new['rate_number'];
} else {
   $arate_num = $new['rate_number'];
   if($new['rate_number'] > 0){ 
      $ratea = $new['rate_score'] / $new['rate_number']; 
      $ratea2 = $new['rate_score'];
      $rateid = $new['id'];
      $ratenum = $new['rate_number'];
   }else{ 
      $ratea = $new['rate_score']; 
      $ratea2 = $new['rate_score'];
      $rateid = $new['id'];
      $ratenum = $new['rate_number'];
   }
}

2 个答案:

答案 0 :(得分:2)

基本上对我来说,通过键盘手动更改值时工作正常。

请注意,输入字段上的“更改”-Event仅在失去焦点时触发。

如果您正在通过jQuery更改值(我猜你是这样),那么你应该通过在末尾添加.trigger('change');来手动触发更改事件。

可以在此处找到类似的问题:jQuery - Detect value change on hidden input field

答案 1 :(得分:1)

您可以尝试以下这些位,基本上您可以使用按键或keydown事件跟踪输入的更改。

var stars = $('.input-star-rate');

stars.bind('keydown', function() {
        alert("comon akar");
        var thisrate = $(this);
        alert(thisrate);
        var ratingValue = $(this).val();
        alert(ratingValue);
        var ratingValue2 = parseFloat(ratingValue);
        alert(ratingValue2);
 });

这是工作小提琴http://jsfiddle.net/h7hnsyh7/ :) 希望这有帮助