1

テキスト入力フィールドの値(数量)をURLに追加しようとしています。もちろん、これを機能させることはできません。

私が持っているのは:

<form class="formProduct" id="formProduct" action="#" method="post">
<input type="text" name="quantity" id="formProductQuantity" value="{{ product.stock.minimum }}" /> // text field with quantity
<a class="button blue opener" href="" title="{{ 'Add to cart' | t }}"><span>{{ 'Add to cart' | t }}</span></a> // submit button
</form>

<script>
 var addUrl = "http://shop.com/cart/add/123456/?quantity="; // 123456 is the product id

asset("#formProduct");

function asset(product){

    $(product + " input#formProductQuantity").val("1");
    $(product + " #formProductQuantity").keyup(function () {
         var val = $(product + " input#formProductQuantity").first().val();
    });

    $(product + " .opener").click(function() {
           var val = $(product + " input#formProductQuantity").first().val();

              // Go to page
              window.location.href = addUrl + val;

    });
 }
 </script>

したがって、私が試しているのは、フォームに入力された数量を渡して、たとえばhttp://shop.com/cart/add/123456/?quantity=100に渡すことです。上記のコードはこのフォーラムで見つけましたが、これを機能させることができません。

それ以上の助けは歓迎します

アップデート

ここですべての助けを借りて、私はそれを機能させました。コメントや変更は大歓迎です。関数コードは次のようになります。

<script type="text/javascript">
 var addUrl = "http://shop.com/cart/add/123456/?quantity="; // 123456  is the product id

 jQuery(document).ready(function(){
  asset("#formProduct");
  });
 function asset(product){

jQuery(product + " input#formProductQuantity").val("1");
jQuery(product + " #formProductQuantity").keyup(function () {
     var val = jQuery(product + " input#formProductQuantity").first().val();
});

jQuery(product + " .opener").click(function(event) {
  event.preventDefault();
   $.get($(this).attr('href'), function(data, status) {
       var val = jQuery(product + " input#formProductQuantity").first().val();

          // Go to page
          window.location.href = addUrl + val;
  $( "#dialog" ).dialog( "open" );
          return false;

  });
 })}

4

3 に答える 3

3

送信ボタンにJavascriptを追加しようとしています。これにより、Javascriptが実行されますが、フォームは引き続き送信されるため、window.location.hrefは実行されません。あなたがする必要があるのは追加することです

falseを返します。

あなたのasset()関数の終わりまで:

$(product + " .opener").click(function() {
    var val = $(product + " input#formProductQuantity").first().val();

    // Go to page
    window.location.href = addUrl + val;
    return false;
});

これにより、フォームの送信が停止され、window.location.hrefが必要に応じてリダイレクトできるようになります。

于 2012-06-05T12:36:31.233 に答える
1

getメソッドを使用してフォームを送信すると、URLを介してデータが送信されると思います

于 2012-06-05T12:09:54.530 に答える
1

あなたは近くにいます。#formProductQuantityの値が必要な場合は、次を使用します。

var val = $("#formProductQuantity").val();

var addUrl = "http://shop.com/cart/add/123456/?quantity=" + val
top.location = addUrl

関数のhrefを更新します:{{'カートに追加' | t}}//送信ボタン

関数にこれを追加します:

$(".opener").attr("href", "http://shop.com/cart/add/123456/?quantity=" + val );

これでアンカーが設定され、移動する準備が整いました...次に、アンカーをクリックすると、離れて移動します:-) target = "_ blank"を追加して、新しいページでURLを開くこともできます。

于 2012-06-05T12:34:08.533 に答える