Skip to content

Instantly share code, notes, and snippets.

@0xWDG
Last active May 20, 2018 22:18
Show Gist options
  • Select an option

  • Save 0xWDG/537f6bf2ebcb6feaabedbc18c940ebc5 to your computer and use it in GitHub Desktop.

Select an option

Save 0xWDG/537f6bf2ebcb6feaabedbc18c940ebc5 to your computer and use it in GitHub Desktop.
Webkit bug

When a <table> is outside of <form> tag the <form> tag will be closed without any <input> fields.

which lead to an undeliverable form

If the <table> is within the <post> tag there is no problem.

Operating system: macOS 10.13.4 (17E202)

Safari: 11.1 (13605.1.33.1.4)

<table>
<form method="POST" id="oldnewuser" action="panel.php?action=admin_userlist&user=new">
<tr>
<td>
<?php echo ($_SESSION['LANG'] == 'nl') ? 'Loginnaam' : 'Login'; ?>
</td>
<td>
<input type='text' name='login' value=''>
</td>
</tr>
<tr>
<td>
<?php echo ($_SESSION['LANG'] == 'nl') ? 'Wachtwoord' : 'Password'; ?>
</td>
<td>
<input type='text' name='pasword' value=''>
</td>
</tr>
<tr>
<td>
<?php echo ($_SESSION['LANG'] == 'nl') ? 'Volledige naam' : 'Full name'; ?>
</td>
<td>
<input type='text' name='name' value=''>
</td>
</tr>
<tr>
<td>
<?php echo ($_SESSION['LANG'] == 'nl') ? 'Adres/huisnummer' : 'Address/Number'; ?>
</td>
<td>
<input type='text' name='adress' value=''>
<input type='text' name='number' value=''>
</td>
</tr>
<tr>
<td>
<?php echo ($_SESSION['LANG'] == 'nl') ? 'Postcode/Plaats' : 'Postal/City'; ?>
</td>
<td>
<input type='text' name='postal' value=''>
<input type='text' name='city' value=''>
</td>
</tr>
<tr>
<td>
<?php echo ($_SESSION['LANG'] == 'nl') ? 'Telefoonnummer' : 'Phone number'; ?>
</td>
<td>
<input type='text' name='telephone' value=''>
</td>
</tr>
<tr>
<td>
<?php echo ($_SESSION['LANG'] == 'nl') ? 'Email' : 'Email'; ?>
</td>
<td>
<input type='text' name='email' value=''>
</td>
</tr>
<tr>
<td>
Website
</td>
<td>
<input type='text' name='website' value=''> ( ; voor meer website's )
</td>
</tr>
<tr>
<td>
<?php echo ($_SESSION['LANG'] == 'nl') ? 'Contactpersoon' : 'Contactperson'; ?>
</td>
<td><input type='text' name='contact' value=''></td>
</tr>
<tr>
<td></td>
<td><input type='submit' value="<?php echo ($_SESSION['LANG'] == 'nl') ? 'Opslaan' : 'Save'; ?>"></td>
</tr>
</form>
</table>
<form method="POST" id="oldnewuser" action="panel.php?action=admin_userlist&user=new">
<table>
<tr>
<td>
<?php echo ($_SESSION['LANG'] == 'nl') ? 'Loginnaam' : 'Login'; ?>
</td>
<td>
<input type='text' name='login' value=''>
</td>
</tr>
<tr>
<td>
<?php echo ($_SESSION['LANG'] == 'nl') ? 'Wachtwoord' : 'Password'; ?>
</td>
<td>
<input type='text' name='pasword' value=''>
</td>
</tr>
<tr>
<td>
<?php echo ($_SESSION['LANG'] == 'nl') ? 'Volledige naam' : 'Full name'; ?>
</td>
<td>
<input type='text' name='name' value=''>
</td>
</tr>
<tr>
<td>
<?php echo ($_SESSION['LANG'] == 'nl') ? 'Adres/huisnummer' : 'Address/Number'; ?>
</td>
<td>
<input type='text' name='adress' value=''>
<input type='text' name='number' value=''>
</td>
</tr>
<tr>
<td>
<?php echo ($_SESSION['LANG'] == 'nl') ? 'Postcode/Plaats' : 'Postal/City'; ?>
</td>
<td>
<input type='text' name='postal' value=''>
<input type='text' name='city' value=''>
</td>
</tr>
<tr>
<td>
<?php echo ($_SESSION['LANG'] == 'nl') ? 'Telefoonnummer' : 'Phone number'; ?>
</td>
<td>
<input type='text' name='telephone' value=''>
</td>
</tr>
<tr>
<td>
<?php echo ($_SESSION['LANG'] == 'nl') ? 'Email' : 'Email'; ?>
</td>
<td>
<input type='text' name='email' value=''>
</td>
</tr>
<tr>
<td>
Website
</td>
<td>
<input type='text' name='website' value=''> ( ; voor meer website's )
</td>
</tr>
<tr>
<td>
<?php echo ($_SESSION['LANG'] == 'nl') ? 'Contactpersoon' : 'Contactperson'; ?>
</td>
<td><input type='text' name='contact' value=''></td>
</tr>
<tr>
<td></td>
<td><input type='submit' value="<?php echo ($_SESSION['LANG'] == 'nl') ? 'Opslaan' : 'Save'; ?>"></td>
</tr>
</table>
</form>
/*
This is a snippet, for the complete function/class see:
https://github.com/wdg/_.js/blob/master/latest/_.js
*/
/**
* ajaxPost
*
* ajaxPost Posts a form, tru ajax.
* Please not call this function yourself, unless you know what you are doing!
*
* @internal
* @web only
* @param object object Wrapper
* @param string form Form to handle
* @param function callback callback to
* @return bool
* @example _('.wrapper').ajaxPost(form)
*/
ajaxPOST: function (form, callback) {
if (!this.nodeJS) {
var len = this.length
while (len--) {
self._lastObj = this[len]
var xmlPhttp
var change = this[len]
if (self.XMLHttpRequest) {
xmlPhttp = new self.XMLHttpRequest() // code for IE7+, Firefox, Chrome, Opera, Safari
} else {
xmlPhttp = new self.ActiveXObject('Microsoft.XMLHTTP') // code for IE6, IE5
}
// Add form to FormData
var formData = new FormData(form) //eslint-disable-line
xmlPhttp.setRequestHeader('Content-Type', 'multipart/form-data');
// Open
xmlPhttp.open('POST', form.action, true)
// Progress (we do not use it (yet))
xmlPhttp.upload.onprogress = function (e) {
if (e.lengthComputable) {
var progress = (e.loaded / e.total) * 100
console.log('Progress = ' + progress + '%')
}
}
// Readystate Change(d)
xmlPhttp.onreadystatechange = function () {
if (xmlPhttp.readyState === 4 && xmlPhttp.status === 200) {
change.innerHTML = xmlPhttp.responseText
// JavaScript Fix!
var js = change.getElementsByTagName('script')
for (var i = 0, j = js.length; i < j; i++) {
eval(js[i].innerHTML) //eslint-disable-line
}
// fix posts also (.ajax)
var pst = change.getElementsByTagName('form')
for (var ii = 0, jj = pst.length; ii < jj; ii++) {
if (pst[ii].method.toLowerCase() === 'post') {
pst[ii].setAttribute('onsubmit', "event.preventDefault();_('." + change.className + "').ajaxPOST(this);")
}
}
}
}
// Send our FormData
xmlPhttp.send(formData)
}
}
return false
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment