1

我对 JS 相当陌生,这就是我到目前为止所拥有的。如果我减去值中的文本,我可以添加它,但这是我想要传递的东西。

$("#test").click(function() {
var total = 0;
$.each($(".sv-select") ,function() {
  total += parseInt($(this).val());

});
 $("input[value='15']").val(total);

});

HTML:

<form method="post" id="wpus-cart-button-form" class="wpus-cart-button-form beaver-run--   -bachelor-gulch-7/15---7/16" action="" onsubmit="return ReadForm(this, true);"><input    type="hidden" name="quantity" value="1" /><label class="lv-label size">ROOM OPTIONS:</label>  <br />
<select class="sv-select variation1" name="variation1" onchange="ReadForm (this.form, false);">
<option value="399 standard double room">standard double room $399.00</option>
<option value="499 upgraded king suite">upgraded king suite $499.00</option>
</select>
<p><br/><label class="lv-label color">ADD GUEST:</label><br />
<select class="sv-select variation2" name="variation2" onchange="ReadForm (this.form, false);">
<option value="0 no guests">no guests</option>
<option value="75 +1">+1</option>
</select>
<input type="hidden" name="product" value="Beaver Run - Bachelor Gulch 7/15 - 7/16" /><input type="hidden" name="price" value="15" /><input type="hidden" name="product_tmp" value="Beaver Run - Bachelor Gulch 7/15 - 7/16" /><input type="hidden" name="cartLink" value="http://performancecarclub.org/portfolio/beaver-run-bachelor-gulch-715-716/" /><input type="hidden" name="addcart" value="1" /><input id="test" class="vsubmit submit" type="submit" value="Purchase Trip!" /></form>

这是jsfiddle:http: //jsfiddle.net/rYfMx/

4

3 回答 3

2

如果由于某种原因您需要选项中的复杂文本,则将某些内容移至数据属性:

示例选项:

<option value="399 standard double room" data-price="399">standard double room $399.00</option>

脚本:

$("#test").click(function() {
var total = 0;
    $.each($(".sv-select option:selected"), function() {
        total += $(this).data("price");
    });
 $("#price").val(total);
});​

更新小提琴:http: //jsfiddle.net/rYfMx/23/

于 2012-06-26T15:18:54.717 回答
2

.click在 jQuery 中已被弃用,.on()是新的好东西。它的结构类似于

$("#test").on('click', function(){

});

经过进一步研究,我发现 .click 没有被弃用(抱歉),在查看 jQuery 的源代码时,我发现它是一个别名。所以我很抱歉我错了,只想更正这条评论。

jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
    "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
    "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {

    // Handle event binding
    jQuery.fn[ name ] = function( data, fn ) {
        if ( fn == null ) {
            fn = data;
            data = null;
        }

        return arguments.length > 0 ?
            this.on( name, null, data, fn ) :
            this.trigger( name );
    };

此外,您的 HTML 中的值可能是数字,然后您就不必解析任何整数。除非您需要跟踪购买的东西。从这里你可以在选择框中获取当前事物的 .val() 。

<option value="399">standard double room $399.00</option>
<option value="499">upgraded king suite $499.00</option>

你介意给这个情况一点背景吗?总体目标是什么?

于 2012-06-26T15:15:11.597 回答
1

您可以通过某个字符分隔值中的整数和文本,并进行拆分以将它们传递到数组中。然后你可以对他们做你想做的事......

<option value="399|standard double room">standard double room $399.00</option>
<option value="499|upgraded king suite">upgraded king suite $499.00</option>

和你的jQuery:

    $("#test").click(function() {
    var total = 0;
    $.each($(".sv-select") ,function() {
      var vals = $(this).val().split("|"),
          price = vals[0],
          type = vals[1];

      total += price;
      //do what you want with type

    });
     $("input[value='15']").val(total);

});
于 2012-06-26T15:34:31.503 回答