मैं इस तरह कई रूपों का प्रतिपादन कर रहा हूँ:

trait = (name, dice, mod) => {
    return `
    <tr><form action="#" onsubmit="renderRoll()">
        <td><label>${name}</label></td>
        <td><input type="text" name="dice" value="${dice}"></td>
        <td><input type="text" name="mod" value="${mod}"></td>
        <td><input type="submit" value="Slå" name="roll" ></td>
    </form></tr>`;
};

document.getElementById('content').innerHTML += trait;

प्रपत्रों में विशिष्ट id:s नहीं होते हैं और DOM में हमेशा एक से अधिक होते हैं। मैं renderRoll() कैसे चला सकता हूं और ट्रिगर किए गए फॉर्म के मूल्यों तक कैसे पहुंच सकता हूं?

0
Himmators 26 फरवरी 2019, 19:15

2 जवाब

सबसे बढ़िया उत्तर

आपको कार्य करने के लिए "renderRoll ()" फ़ंक्शन के अंदर एक तर्क पारित करना होगा।

<form action="#" onsubmit="renderRoll(event)">

function renderRoll(event) {
//here is your target...
var target = event.target;
alert(target.innerHTML);
}
1
danielarend 26 फरवरी 2019, 19:20

मेरा सुझाव है कि आप फॉर्म तत्व के नाम के रूप में एक अद्वितीय आईडी का उपयोग करें जैसा कि नीचे दिया गया है:

const trait = (id, name, dice, mod) => {
    return `
    <tr><form name="${id}" action="#" onsubmit="renderRoll">
        <td><label>${name}</label></td>
        <td><input type="text" name="dice" value="${dice}"></td>
        <td><input type="text" name="mod" value="${mod}"></td>
        <td><input type="submit" value="Slå" name="roll" ></td>
    </form></tr>`;
};

document.getElementById('content').innerHTML += trait("form", "test", "test", "test");

और जब भी फॉर्म ट्रिगर होता है तो फॉर्म डेटा का उपयोग करें:

function renderRoll() {
    let data = document.forms.namedItem("form").elements;
    data = [...data].map(({name, value}) => ({name, value}));

    console.log(data)
}

मुझे आशा है कि यह उपयोगी होगा।

0
Ali Torki 26 फरवरी 2019, 19:39