簡體   English   中英

動態生成Javascript提交按鈕

[英]Dynamically generate Javascript submit button

首先,請讓我知道是否需要更好地表述以便更有意義,並感謝您的閱讀。

我目前正在制作一個創建大量表單元素的網頁,其中每個表單元素的id,名稱和值取決於以前的用戶選擇,如以下示例所示,其中id,名稱和值取決於任何值$ arr當時包含

?>
<div id='<?= $arr['param_name'] ?>Div' class='dynamicDiv'>
    <b><?= $arr['param_desc'] ?></b>
    <br/>
    <input type='Text' id='<?= $arr['param_name'] ?>' 
        name='<?= $arr['param_name'] ?>'
        value='<?= $arr['default_val'] ?>' class='dynamicTextBox'>
</div>
<?php

那部分基本上沒問題,但是然后有許多提交按鈕,這些按鈕類似地動態生成,但是經過硬編碼。 這些輸入按鈕的jQuery是硬編碼的,如以下示例所示,

<input type='Submit' value=' Query Data' name='funcSearch' 
    onclick="queryAngle(('<?php echo $result[0]['query_id'] ?>'),('<?php echo $_GET['schema'] ?>'),
    ($('#firstFrame').val()), ($('#lastFrame').val()),($('#skip').val()), ($('#atomID1').val()),  
    ($('#atomID2').val()), ($('#atomID3').val())); false;" class='dynamicParamButton'><br/><br/>

由於這些提交按鈕有十幾個左右,每個都經過硬編碼,並且至少是此按鈕的大小的兩倍,因此它變得非常復雜。 我想采用某種面向對象的方法來使此東西可維護,但是需要一些幫助來確定從哪里開始。 有一個好的起點嗎? 也許我應該在PHP中將提交按鈕生成為字符串,或者有一些jQuery功能可以解決此問題?

為了完整起見,上面粘貼的示例中的Submit按鈕將值發送到javascript文件中的以下函數,

function queryAngle(query_id, schema, firstFrame, lastFrame, frameSkip, atomID1, atomID2, atomID3) {
if (query_id === "") {
    $("#QueryInfo").html("<p>Error Please enter valid arguments</p>");
    return;
}
$("#waiting").show(500);
$("#interface").hide(0);

$.post('./function_files/angleFunction.php',
    {
        query_id: query_id,
        simschema: schema,
        firstFrame: firstFrame,
        lastFrame: lastFrame,
        frameSkip: frameSkip,
        atomID1: atomID1,
        atomID2: atomID2,
        atomID3: atomID3
    },

    function (data) {
        showResultReady(data);
    });
}

但是這些函數也有十幾個,例如這里顯示的queryAngle,還有queryDensity,queryTorsion等等。 它們基本上都做相同的事情-將值分別傳遞到文件angleFunction.php,densityFunction.php,torsionFunction.php,並且很高興有一種方法可以對此帶來一些抽象或面向對象的觀點。 感謝您的幫助或想法。

以我的經驗,沒有任何一種超級容易和干凈的方法可以動態地使用PHP生成JavaScript,您通常會在此處或那里找到丑陋的代碼。

也就是說,動態生成表單似乎是表單庫的工作。 我想大多數框架都會提供類似的功能,因為這是一項非常常見的任務。 您沒有說明要使用哪個Framework,如果不使用它,我的第一個建議就是親身體驗。

我自己曾與Zend_Form一起工作,它們工作得很好,只需編寫一些代碼,您便可以為自己找到所需的工具。 例如,Zend_Form用於使用Dijit的表單創建簡單的自動完成功能

$element = new Zend_Dojo_Form_Element_FilteringSelect($variable);
$element->setStoreId($variable . "_store");
$element->setStoreType("dojox.data.QueryReadStore");
$element->setStoreParams(array("url" => "url/autocomplete-key-value?company=1"));

這不是嵌套元素,但是您可以大致了解它們的工作原理。 如果發布您正在使用的框架,則可能會得到更好的答案。

希望對您有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM