如何使用iframe的父级使用javascript设置表单的元素值?

时间:2013-10-04 15:27:45

标签: javascript jquery iframe

这是我尝试过的,但是没有工作,我没有收到任何错误。

   <iframe id="paymentFrame" width="600px" height="670px" scrolling="auto" frameborder="0" src='@Url.Action("ISWForm")'></iframe>


   <script type="text/javascript">

 function sendISWPostData() {

     $("#paymentFrame").load(function () {

         var doc = this.contentDocument;
         var form = doc.getElementById('form1');
         var actionUrl = '@ViewBag.WebPayUrl';
         form.action = actionUrl;
         $(':input[name=product_id]').val('@ViewBag.ProductID');
         $(':input[name=amount]').val('@ViewBag.TransAmount');
         $(':input[name=currency]').val('@ViewBag.TransCurrency');
         $(':input[name=site_redirect_url]').val('@ViewBag.RedirectUrl');
         $(':input[name=txn_ref]').val('@ViewBag.TransRef');
         $(':input[name=pay_item_id]').val('@ViewBag.PayItemID');
         $(':input[name=hash]').val('@ViewBag.Hash');

         form.submit();

         //return true;


     });   //end load
  }  // end send

  $(document).ready(function () {
 sendISWPostData();
 //return true;
 });

 </script>

我现在一直在寻找2天,感觉有时间寻求帮助......谢谢

编辑:我改变了代码以使用正确的jquery语法。我仍然没有得到表格的输入。该表单位于由iframe引用的页面中。

1 个答案:

答案 0 :(得分:2)

您需要将val()与jQuery对象一起使用,而不是value属性。

更改

$(':input[name=product_id]').value = '@ViewBag.ProductID';

$(':input[name=product_id]').val('@ViewBag.ProductID');

将jQuery对象更改为DOM对象

$(':input[name=product_id]')[0].value = '@ViewBag.ProductID';

修改根据评论和更新的OP

如果您尝试访问iframe的内容,则可能需要使用contents()并且您的代码将是

$(this).contents().find(':input[name=product_id]').val('@ViewBag.ProductID');