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

How do i set a form's elements value with javascript from the parent of an iframe?

本文关键字:javascript 设置 元素 表单 何使用 iframe      更新时间:2023-09-26

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

   <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 引用的页面中。

你需要将

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的内容,那么你可能需要使用content(),你的代码将是

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