मैं जावास्क्रिप्ट और Drupal रूपों के साथ प्रयोग कर रहा हूं। वर्तमान में मैं एक मॉड्यूल के प्रशासन के रूप में एक बटन बनाने की कोशिश कर रहा हूं जो चयन सूची में विकल्पों को जोड़ने के लिए जावास्क्रिप्ट का उपयोग करेगा। मेरे द्वारा चलाए जा रहे समस्या यह है कि जब मैं बटन पर क्लिक करता हूं, तो मेरे जावास्क्रिप्ट को कॉल किया जाता है लेकिन पूरे फॉर्म को रिफ्रेश किया जाता है। मैंने फॉर्म एपीआई संदर्भ को देखा है, जिसमें किसी प्रकार की विशेषता है जिसे मैं बटन पर सेट कर सकता हूं इसे रोकने के लिए, लेकिन कुछ भी नहीं मिला। क्या कोई ऐसा तरीका है जिससे मैं पृष्ठ को ताज़ा करने से बटन को रोक सकता हूं या क्या यह एक मृत अंत है?
$form['#attached']['js'] = array(
drupal_get_path('module', 'test').'/js/test.js',
);
$form['list'] = array(
'#type' => 'select',
'#options' => array(),
'#attributes' => array(
'name' => 'sellist',
),
'#size' => 4,
);
$form['add_button'] = array(
'#type' => 'button',
'#value' => 'Add',
'#attributes' => array(
'onclick' => "add_to_list(this.form.sellist, 'Append' + this.form.sellist.length);",
),
);
//JavaScript
function add_to_list(list, text) {
try {
list.add(new Option(text, list.length), null) //add new option to end of "sample"
}
catch(e) {
list.add(new Option(text, list.length));
}
}
मेरा अंतिम कोड:
<?php
function jstest_menu() {
$items['admin/config/content/jstest'] = array(
'title' => 'JavaScript Test',
'description' => 'Configuration for Administration Test',
'page callback' => 'drupal_get_form',
'page arguments' => array('_jstest_form'),
'access arguments' => array('access administration pages'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
function _jstest_form($form, &$form_state) {
$form['list'] = array(
'#type' => 'select',
'#options' => array(),
'#size' => 4,
);
$form['text'] = array(
'#type' => 'textfield',
);
$form['add_button'] = array (
'#type' => 'button',
'#value' => t("Add"),
'#after_build' => array('_jstest_after_build'),
);
return $form;
}
function _jstest_after_build($form, &$form_state) {
drupal_add_js(drupal_get_path('module', 'jstest').'/js/jstest.js');
return $form;
}
JavaScript
(function ($) {
Drupal.behaviors.snmpModule = {
attach: function (context, settings) {
$('#edit-add-button', context).click(function () {
var list = document.getElementById('edit-list');
var text = document.getElementById('edit-text');
if (text.value != '')
{
try {
list.add(new Option(text.value, list.length), null);
}
catch(e) {
list.add(new Option(text.value, list.length));
}
text.value = '';
}
return false;
});
$('#edit-list', context).click(function () {
var list = document.getElementById('edit-list');
if (list.selectedIndex != -1)
list.remove(list.selectedIndex);
return false;
});
}
};
}(jQuery));