【问题标题】:Values are passing, but the alerts are not working in javaScript值正在传递,但警报在 javaScript 中不起作用
【发布时间】:2015-02-13 16:56:13
【问题描述】:

当用户评价特定产品时,我希望弹出如下所示的警报,但它们不起作用。所有值都来自数据库中的表。输入标签的数据工作正常。

这是我的 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'];
   }
}

【问题讨论】:

  • 你能创建一个小提琴吗?
  • @putvande 这是小提琴jsfiddle.net/Akarshani/pjnfykm5
  • 您的小提琴不包括 jQuery。你用的是什么版本?并且只发布呈现的 HTML,因为 PHP 与您的问题无关。

标签: javascript php


【解决方案1】:

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

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

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

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

【讨论】:

  • 当我使用这个时,所有的警报都会在页面重新加载时给出。
  • @Sudda 请提供用于更改值的 jQuery/Javascript 代码。
  • @Sudda 那是您已经提供的代码。您打算如何更改输入字段的值?因为页面加载本身不会触发“更改”事件。由于您的字段是隐藏的,用户究竟如何更改值?正是脚本改变了我们需要为您提供可靠解决方案的价值。
【解决方案2】:

你可以试试下面这一段,基本上你可以通过keypress或者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/ :) 希望这会有所帮助

【讨论】:

  • 输入用于星级评定功能。我想授予用户更改每个产品的星级值的权限。
猜你喜欢
  • 2011-07-13
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
  • 2021-08-28
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多