Skip to content

Commit 6882f45

Browse files
committed
fix(pat-inject): Support submit buttons without a type attribute.
1 parent 22d814f commit 6882f45

File tree

2 files changed

+49
-2
lines changed

2 files changed

+49
-2
lines changed

src/pat/inject/inject.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,15 @@ const inject = {
9999
$el.on("submit.pat-inject", this.onTrigger.bind(this))
100100
.on(
101101
"click.pat-inject",
102-
"[type=submit]:not([formaction])",
102+
`[type=submit]:not([formaction]),
103+
button:not([formaction]):not([type=button])`,
103104
ajax.onClickSubmit
104105
)
105106
.on(
106107
"click.pat-inject",
107-
"[type=submit][formaction], [type=image][formaction]",
108+
`[type=submit][formaction],
109+
[type=image][formaction],
110+
button[formaction]:not([type=button])`,
108111
this.onFormActionSubmit.bind(this)
109112
);
110113
} else if ($el.is(".pat-subform")) {

src/pat/inject/inject.test.js

+44
Original file line numberDiff line numberDiff line change
@@ -1241,6 +1241,50 @@ describe("pat-inject", function () {
12411241
expect(pat_ajax.onClickSubmit).toHaveBeenCalledTimes(1);
12421242
});
12431243
});
1244+
1245+
describe("9.2.6 - Support submit buttons without type attribute ...", () => {
1246+
it("9.2.6.1 - ... without a formaction atttribute.", async function () {
1247+
document.body.innerHTML = `
1248+
<form class="pat-inject" action="test.cgi">
1249+
<button/>
1250+
</form>
1251+
`;
1252+
1253+
const pat_ajax = (await import("../ajax/ajax.js")).default;
1254+
jest.spyOn(pat_ajax, "onClickSubmit");
1255+
jest.spyOn(pattern, "onFormActionSubmit");
1256+
1257+
const form = document.querySelector("form");
1258+
const button = form.querySelector("button");
1259+
1260+
pattern.init($(form));
1261+
button.click();
1262+
1263+
expect(pat_ajax.onClickSubmit).toHaveBeenCalledTimes(1);
1264+
expect(pattern.onFormActionSubmit).toHaveBeenCalledTimes(0);
1265+
});
1266+
1267+
it("9.2.6.1 - ... with a formaction atttribute.", async function () {
1268+
document.body.innerHTML = `
1269+
<form class="pat-inject">
1270+
<button formaction="test.cgi"/>
1271+
</form>
1272+
`;
1273+
1274+
const pat_ajax = (await import("../ajax/ajax.js")).default;
1275+
jest.spyOn(pat_ajax, "onClickSubmit");
1276+
jest.spyOn(pattern, "onFormActionSubmit");
1277+
1278+
const form = document.querySelector("form");
1279+
const button = form.querySelector("button");
1280+
1281+
pattern.init($(form));
1282+
button.click();
1283+
1284+
expect(pat_ajax.onClickSubmit).toHaveBeenCalledTimes(1);
1285+
expect(pattern.onFormActionSubmit).toHaveBeenCalledTimes(1);
1286+
});
1287+
});
12441288
});
12451289
});
12461290

0 commit comments

Comments
 (0)